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