问答题
请编写一个函数fun,它的功能是:求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。例如,若传送给m的值为50,则程序输出:
7 11 14 21 22 28 33 35 42 44 49
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
给定源程序:
#include<stdio.h>
#define M 100
void fun(int m,int*a,int*n)
{
}
main()
{int aa[M],n,k;
fun(50,aa,&n);
for(k=0;k<n;k++)
if((k+1)%20==0)printf("/n");
else printf("%4d",aa[k]);
printf("/n");
}
【正确答案】
【答案解析】void fun(int m, int *a, int *n)
int i,j=0;
for(i=1;i<=m;i++)
if(i%7==0||i%11==0)/*求出1到m(含m)之内能被7或11整除的所有整数放在数组a中*/
a[j++]=i;
*n=j; /*返回这些数的个数*/
}
[解析] 本题应使用循环判断语句实现,首先要确定循环变量的取值范围,题且要求找到1~m之间附合要求的数,所以循环变量的取值范围为1~m。if条件语句用来对每一个数进行判断,注意题目要求能被7或11整除,因此条件表达式中应使用逻辑或"||"运算符。