问答题
编写函数fun(),它的功能是:求出1~1000之内能被7或11整除、但不能同时被7和11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
[试题源程序]
#include<conio.h>
#include <stdio.h>
void fun(int*a,int*n)
main()
int aa[1000],n,k;
clrscr();
fun(aa,&n);
for(k=0;k<n;k++)
if(k+1)%10==0)
printf("%5d",aa[k]);
printf("/n");
else
printf("%5d",aa[i]);
【正确答案】void fun(int*a,int*n)
{
int i,j=0;
for(i=1;i<=1000;i++)
if((i%7==0||i%11==0)&&i%77!=0)
a[j++]=i;
*n=j;
}
【答案解析】[解析] 本题的关键是if条件语句及参数传递。本题的设计思路是:(1)利用循环遍历1到1000之内的整数;(2)利用if语句判断,把查找到的整数保存到形参数组a中;(3)把数组a中数组元素的个数赋值到形参指针n所指的内存。注意程序中的if语句的判断条件,本题是找出能被7或11整除但不能同时被7和11整除的所有整数。能同时被7和11整除的数一定能被77整除,且不能被7整除的数不一定就是能被7或11整除的数。所以可得出程序中的if语句。