#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int isShouXing(int num);
int numLength(int num);
//寻找守形数
//守形数的平方低位时该数本身
//例如25*25=625 625的低位有25
main(){
//rintf("%d",numLength(55));//ok
//printf("--%d",isShouXing(23));//ok
int i=0;
for(i=0;i<=100;i++){
if(isShouXing(i)){
printf("%d,",i);
}
}
}
int isShouXing(int num){
int flag=0;
int len=numLength(num);
//printf("len%d ",len);
int sq=num*num;
int yes=1;//假设是守形数//关于一堆数判断是不是XX 一般都先假设是
//逐个扫描 一旦碰到不是 设为false就结束
//如果先假设不是 逐个扫描 记下符合条件的次数 再判断该次数是否和预计总次数相等
//这样想就比较复杂了 需要计算多个变量
//这种思想同样适用于 寻找回文
int i=0;
//一个数字有几位 那么对于其平方只比较后几位
//25只有两位 那么其平方625值比较后面两位
//取个位数字 十位数字 通过%10的方式
while(i<len){
if( sq%10 !=num%10 ){
yes=0;
break;
}else{
sq/=10;
num/=10;
i++;
}
}
//printf("i=%d",i);
return yes;
}
/**
计算一个数字有几位 10---2位 356---3位
*/
int numLength(int num){
int len=1;
while((num=num/10)!=0){
len++;
}
return len;
}