请编写函数void eountValue(int *a,int *n),它的功能是:求出1~1000之内能被7或11整除但不能同时被7和11整除的所有整数并存放在数组a中,并通过n返回这些数的个数。
注意:部分源程序已给出。
请勿改动主函数main()和写函数writeDAT()的内容。
[试题程序]
#include<stdlib.h>
#include<stdio.h>
void writeDAT();
void countValue(int *a,int *n)
void main()
int aa[1000],n,k;
system("CLS");
countValue(aa,&n);
for(k=0;k<n;k++)
if((k+1)%10==0)
printf("%5d",aa[k]);
printf("kn");
else printf("%5d",aa[k]);
writeDAT();
void writeDAT()
int aa[1000],n,k;
FILE *fp;
fP=fopen("out10.dat","w");
countValue(aa,&n);
for(k=0;k<n;k++)
if((k+1)%10==0)
fprintf(fp,"%5d",aa[k]);
fprintf(fp,"\n");
else fprintf(fp,"%5d",aa[k]);
fclose(fp);
参考答案:void countValue(int *a,int*n)
{
int i; /*定义循环控制变量*/
*n=0; /*初始化计数器变量*/
for(i=1;i<=1000;i++) /*在这个范围内寻找符合条件的数*/
if((i%7==0 &&i% 11!=0)||(i%7!=0%% i%11==0)) /*如果当前数可以被7整除而不可以被11整除,或者可以被11整除而不可以被7整除*/
{
*a=i; /*保存符合条件的数*/
*n=*n+1; /*统计符合条件的数的个数*/
a++;
}
}
解析: 本题的解题思路是:首先通过一个for循环来控制范围,用一个if语句来判断当前所取的数是否符合条件:可以被7整除而不可以被11整除,或者可以被11整除而不可以被7整除。最后保存符合条件的数,并统计个数。