问答题
请编写一个函数fun,它的功能是:求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。例如,若传送给m的值为50,则程序输出:
7 11 14 21 22 28 33 35 42 44 49
注意:部分源程序存在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include<stdio.h>
#define M 100
void fun(int m, int *a, int *n)
{

}
main()
{ int aa[M], n, k;
void NONO();
fun(50, aa, &n);
for(k=0; k<n; k++)
if((k+1)%20==0)printf("/n");
else printf("%4d", aa[k]);
printf("/n");
NONO();
}
void NONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp, *wf;
int i, n, j, k, aa[M], sum;
fp=fopen("in.dat", "r");
wf=fopen("out.dat", "w");
for(i=0; i<10; i++) {
fscanf(fp, "%d,", &j);
fun(j, aa, &n);
sum=0;
for(k=0; k<n; k++) sum+=aa[k];
fprintf(wf, "%d/n", sum);
}
fclose(fp);
fclose(wf);
}
【正确答案】
【答案解析】int i, j=0; *n=0;
for(i=1; i<=m; i++)
if(i%7==0 ||i%11==0)
{
a[j]=i;
j++;
}
*n=j;
答案考生文件夹 [解析] 该题是求某范围内能被7或11整除的数。该程序的解题思路可以分解为以下几步:判断是否被7整除→判断或者是否被11整除→按要求返回计算结果。
[考点] for循环结构。