本题要求实现一个函数,判断任一给定整数N
是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。
int IsTheNumber ( const int N )
{
int a,b,m,n,flag=0;
n=N;
a=(int)sqrt(n); //sqrt是double类型的这里需要强制转换一下
int z[10]={0}; //新建一个数组用来存数字的个数(值为数字的个数,序号是什么数字)
b = a*a; //判断是否为完全平方数,如何这个数开方后的数字再平方后还是这个数,那说明这个数就是完全平方数。
if(b==n){ //说明是完全平方数,进行进一步的判断。
while(n){
m=n%10; //取个位数字
z[m]++; //数字的个数加一
n/=10; //取十位数字,取百位数字。。。。
}
for(int i=0;i<10;i++){ //遍历这个数组,看有没有数字的个数大于2,如果大于2说明有两个数字相同返回1,反正没有返回0
if(z[i]>=2)
{
flag=1;
return 1;
}
}
if(flag==0) //没找到数字大于2的
return 0;
}else{
return 0;
}
}