一个函数赋值的问题
编写一个函数,利用参数传入一个3位数number,找出101~number之间所有满足下列两个条件的数:它是完全平方数,又有两位数字相同,如144、676等,函数返回找出这样的数据的个数。请同时编写主函数。
我的问题是,为何输出的结果是不对的,而我把flag1和flag2的赋值放在最外层的for循环以内输出的结果就对了呢,刚刚学C。很多地方都不甚明白,求大神指教啊。
#include <stdio.h>
#include <math.h>
int search(int n);
int main(void)
{
int number,ri,repeat;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
do{
scanf("%d",&number);
}while(number<101||number>999);
printf("count=%d\n",search(number));
}
}
/*---------*/
int search(int number)
{
int i,j,k,count,flag1,flag2;
count=0;
flag1=0;flag2=0;
for(k=101;k<=number;k++){
for(j=sqrt(k*1.0)-1;j<=sqrt(k*1.0)+1;j++)
{
if(k==j*j)
{flag2=1;
break;}
}
int a1,a2,a3;
a1=k%10;
a2=(k/10)%10;
a3=k/100;
if(a1==a2||a1==a3||a2==a3)
flag1=1;
if(flag1==1&&flag2==1)
count++;
}
return count;
}