C 寻找0~100的守形数
#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; }