问答题 下列程序的功能是:在三位整数(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; /*返回找到的个数*/ }
【答案解析】