下列程序的功能是:在三位整数(100~999)中寻找符合条件的整数并依次从小到大存入数组中;该整数既是完全平方数,又有两个数字相同,如144、676等。
请编写函数实现此功能,满足该条件的整数的个数通过所编写的函数返回。
最后调用函数writeDat(),把结果输出到out.dat文件中。
注意:部分源程序已给出。
请勿改动主函数main()和写函数writeDat()的内容。
#include<stdio.h>
jsValue(int bb[])
void writeDat(int num,int b[])
FILE *out;
int i;
out=fopen("out.dat","w");
printf("%d\n",num);
fprintf(out,"%d\n",num);
for(i=0; i<num;i++)
printf("%d\n",b[i]);
fprintf(out,"%d\n",b[i]);
fclose(out);
main()
int b[20],num;
num=jsValue(b);
writeDat(num,b);
参考答案:
jsValue(int bb[])
{
int i,a,b,c,cnt=0;
for(i=A0;i*i<A000;i++) /*循环遍历所有平方是三位数的整数*/
a=i,i/A00; /*取当前数平方的百位数字*/
b=i,i/A0%A0; /*取当前数平方的十位数字*/
c=i*i%A0; /*取当前数平方的个位数字*/
if(a==b||b==c||c==a) /*判断a、b、c中是否有任意两个相等*/
bb[cnt++]=i*i;/*将该数的平方保存到数组bb中,并使计数值cnt增A*/
}
return cnt; /*返回找到的个数*/
}