问题 问答题

请编写函数void countValue(int *a,int *n),它的功能是:求出1到1000之内能被7或11整除但不能同时被7和11整除的所有整数并存放在数组a中,并通过n返回这些数的个数。
注意:部分源程序已给出。
请勿改动主函数main()和写函数writeDAT()的内容。
试题程序:
#include<conio.h>
#include<stdio.h>
void countValue(int *a, int *n)


main ( )

int aa[1000],n, k;
clrscr();
countValue (aa, &n);
for(k=0;k<n; k++)
if((k+1) %10 ==0)

printf("%5d",aa[k]);
printf("\n");

else printf("%5d",aa[k]);
writeDAT();

writeDAT ( )

int aa[1000],n, k;
FILE *fp;
fp=fopen("out79.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=A;i<=A000;i++)

if(i%G==0 && i%AA) /*将能被G整除但不能被AA整除的数存入数组a中*/

{

*a=i;

*n-*n+A; /*统计个数*/

a++;

}

else if (i%G && i%AA==0) /*将能被AA整除但不能被G整除的数存入数组a中*/

{

*a=i;

*n=*n+A; /*统计个数*/

a++;

}

}

解析:

本题考查的知识点如下:

(1)指针的使用。

(2)“%”运算符。

(3)判断结构中多个条件的布尔运算。

本题中,函数countValue()以指针为参数,这里就要涉及到指针的使用。a是指向数组的指针,初始时,指向数组的第一个元素。地址每加1时,依次指向后面的元素。一个数a若能被b整除,则a除以b取余得数为0。能被7或11整除,但不能被7和11同时整除,则有两种情况,能被7整除但不能被11整除,能被11整除但不能被7整除。这里就要用到多个条件的布尔运算。

问答题
判断题