#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void toChars(char str[],int num);
int isHui(char str[]);
int isSquare(int num);
void main()
{
int num=100;
while((num++)<1000)
{
char str[20];
int i=0;
//初始化
for(; i<20; i++)
{
str[i]=0;
}
int flagSquare=isSquare(num);
toChars(str,num);
//printf(str);
int flagHui=isHui(str);
//printf("%d",flagHui);
if(flagHui && flagSquare){
printf("%4d,",num);
}
}
}
void toChars(char str[], int num)
{
int p=num;
int i=0;//数组的下标 //注意 函数呃逆局部变量要手动赋初值
while(p!=0)
{
str[i++]=p%10+48;
//如果一个char型变量c是数字字符 转为数字 c-'0'
//对一个数字 8 转为'8' 只需加上48
p=p/10;
}
}
int isHui(char str[])
{
int last=0;//用于标记末位有效位下标
//找到末尾有效位
//对了 前面已经将数组所有元素初始化为空字符 (ASCII为0)
while(str[last]!=0)
{
last++;
}//循环结束时 last所指向的字符ASCII恰为0
last--;
int i=0;
int flag=1;
while( i<last )
{
if( str[i]!=str[last] )
{
flag=0;
}
i++;
last--;
}
return flag;
}
int isSquare(int num)
{
int i=1;
int flag=0;
if(num==1)
{
flag=1;
}
else
{
for(; i<num/2; i++)
{
if(num==(i*i))
{
flag=1;
}
}
}
return flag;
}