问答题
请编写函数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向后移动一位,以便存放下一个数*/
}
}
【答案解析】