问答题 请编写函数countValue(),其功能是:求出1~1000之内能被7或11整除但不能同时被7或11整除的所有整数,将它们放在数组a中,并通过n返回这些数的个数。 主函数最后调用函数writeDAT()把计算结果输出到out.dat文件中。 注意:部分源程序已经给出。 请勿改动主函数main()和输出数据函数writeDAT()的内容。 #include <conio.h> #include <stdio.h> void countValue(int *a,int *n) { } void writeDAT() { int aa[1000],n,k; FIIE *fp; fp=fopen("out.dat","w"); countValue(aa,&n); for (k=0;k<n;k++) if ((k+1)%10==0) fprintf(fp,"%5d/n",aa[k]); else fprintf(fp,"%5d",aa[k]); fprintf(fp,"/n"); fclose(fp); } main() { int aa[1000],n,k; countValue(aa,&n); for (k=0;k<n;k++) if ((k+1)%10==0) printf("%5d/n",aa[k]); else printf("%5d",aa[k]); writeDAT(); }
【正确答案】void countValue(int *a,int *n) { int i; *n=0; /*将指针n所指的内容清0*/ for (i=1;i<=1000;i++) /*循环遍历1~1000之间的数*/ if ((i%7==0 && i%11) || (i%7 && i%11==0)) { /*若当前数能被7或11整除但不能同时被7或11整除的话*/ *a=i; /*将此数存入指针a所指处*/ *n=*n+1; /*将指针n所指的内容增1*/ a++; /*将指针a向后移动一位,以便存放下一个数*/ } }
【答案解析】