1、三级数据库技术机试-258 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.请编写函数 void countValue(int *a,int *n),它的功能是:求出 1 到 1000 之内能被 7 或 11 整除但不能同时被 7 和 11 整除的所有整数并存放在数组 a 中,并通过 n 返回这些数的个数。注意:部分源程序已给出。请勿改动主函数 main()和写函数 writeDAT()的内容。试题程序:#includeconio.h#includestdio.hvoid countValue(int *a, int *n)main ( )
2、int aa1000,n, k;clrscr();countValue (aa, for(k=0;kn; k+)if(k+1) %10 =0)printf(“%5d“,aak);printf(“/n“);else printf(“%5d“,aak);writeDAT();writeDAT ( )int aa1000,n, k;FILE *fp;fp=fopen(“out79.dat“,“w“);countValue(aa,for(k=0; kn; k+)if(k+1)%10=0)fprintf(fp,“%5d“,aak);fprintf(fp,“/n“);else fprintf (fp,“%
3、5d“,aak);fclose(fp);(分数:100.00)_三级数据库技术机试-258 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.请编写函数 void countValue(int *a,int *n),它的功能是:求出 1 到 1000 之内能被 7 或 11 整除但不能同时被 7 和 11 整除的所有整数并存放在数组 a 中,并通过 n 返回这些数的个数。注意:部分源程序已给出。请勿改动主函数 main()和写函数 writeDAT()的内容。试题程序:#includeconio.h#includestdio.hvoid cou
4、ntValue(int *a, int *n)main ( )int aa1000,n, k;clrscr();countValue (aa, for(k=0;kn; k+)if(k+1) %10 =0)printf(“%5d“,aak);printf(“/n“);else printf(“%5d“,aak);writeDAT();writeDAT ( )int aa1000,n, k;FILE *fp;fp=fopen(“out79.dat“,“w“);countValue(aa,for(k=0; kn; k+)if(k+1)%10=0)fprintf(fp,“%5d“,aak);fprin
5、tf(fp,“/n“);else fprintf (fp,“%5d“,aak);fclose(fp);(分数:100.00)_正确答案:(void countValue(int *a, int *n)int i;*n=0;for(i=1;i=1000;i+)if(i%7=0 *n-*n+1; /*统计个数*/a+;else if (i%7 *n=*n+1; /*统计个数*/a+;)解析:解析 本题考查的知识点如下:(1)指针的使用。(2)“%”运算符。(3)判断结构中多个条件的布尔运算。本题中,函数 countValue()以指针为参数,这里就要涉及到指针的使用。a 是指向数组的指针,初始时,指向数组的第一个元素。地址每加 1 时,依次指向后面的元素。一个数 a 若能被 b 整除,则 a 除以 b 取余得数为 0。能被 7 或 11 整除,但不能被 7 和 11 同时整除,则有两种情况,能被 7 整除但不能被 11 整除,能被 11 整除但不能被 7 整除。这里就要用到多个条件的布尔运算。