C 既是完全平方又是回文的数
#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; }