1、三级数据库技术机试-306 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.下列程序的功能是:将大于整数 m且紧靠 m的 k个素数存入数组 xx。请编写函数 num(int m,int k,int xx)实现程序的要求,最后调用函数 readwrite DAT()把结果输出到 out31.dat文件中。例如:若输入 17,5,则应输出 19,23,29,31,37。注意:部分源程序已给出。请勿改动主函数 main()和输入输出函数 readwriteDAT()的内容。试题程序:#includeconio.h#includestdio.hvo
2、id readwriteDAT();void num(int m, int k,int xx)main ( )int m,n,xx1000;clrscr ( );printf(“/nPlease enter two integers:“scanf(“%d,%d“,num(m, n, xx);for(m=0;mn;m+)printf(“%d “,xxm);printf(“/n“);readwriteDAT();void readwriteDAT()int m, n, xx1000,i;FILE *rf,*wf;rf=fopen(“in31.dat“,“r“)wf=fopen(“out31.dat
3、“,“w“);for(i=0;i10;i+)fscanf(rf,“%d %d“,num(m,n,xx);for(m=0;mn;m+)fprintf(wf,“%d “,xxm);fprintf(wf,“/n“);fclose(rf);fclose(wf);(分数:100.00)_三级数据库技术机试-306 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.下列程序的功能是:将大于整数 m且紧靠 m的 k个素数存入数组 xx。请编写函数 num(int m,int k,int xx)实现程序的要求,最后调用函数 readwrite DAT()把结果
4、输出到 out31.dat文件中。例如:若输入 17,5,则应输出 19,23,29,31,37。注意:部分源程序已给出。请勿改动主函数 main()和输入输出函数 readwriteDAT()的内容。试题程序:#includeconio.h#includestdio.hvoid readwriteDAT();void num(int m, int k,int xx)main ( )int m,n,xx1000;clrscr ( );printf(“/nPlease enter two integers:“scanf(“%d,%d“,num(m, n, xx);for(m=0;mn;m+)pr
5、intf(“%d “,xxm);printf(“/n“);readwriteDAT();void readwriteDAT()int m, n, xx1000,i;FILE *rf,*wf;rf=fopen(“in31.dat“,“r“)wf=fopen(“out31.dat“,“w“);for(i=0;i10;i+)fscanf(rf,“%d %d“,num(m,n,xx);for(m=0;mn;m+)fprintf(wf,“%d “,xxm);fprintf(wf,“/n“);fclose(rf);fclose(wf);(分数:100.00)_正确答案:(void num(int m,in
6、t k,int xx)int data=m+1; /*从大于整数 m的数开始找*/int half,I,n=0;while(1)half=data/2;for(I=2;I=half;I+) /*如果该数依次除以从 2到一半的整数,余数都不是 0,则该数是素数*/if(data% I=0) break; /*如果余数为 0,则退出循环,取卞一个数判断*/if(1half)xxn=data;n+; /*判断该数为素数后,将该数存入数组 xx中,并累计素数的个数*/if(n=k)break; /*如果累计素数的个数超过了要求的个数,则退出循环*/data+; /*如果累计素数的个数小于要求的个数,则
7、继续取下一个数*/)解析:解析 本题考查的知识点如下:(1)循环结构与选择结构的嵌套使用。(2)强行退出循环结构。(3)特殊运算符“%”的使用。素数是除了 1和它本身之外不能被其他数整除的数(1 除外)。在本题中,首先要结合相关数学知识找出判定一个数是否为素数的方法,从而对数据进行筛选。如果数据 a依次除以从 2到 a/2的整数,余数都不是 0,则该数是素数。因为所给的数据是连续的数,而且最终所求的数据的个数一定,所以这里可以使用循环结构对数据依次筛选。同时嵌套选择结构对筛选的数据进行不同的处理。在 a依次除以从 2到 a/2的整数的过程中,只要有一次余数为 0,则可退出这一层循环,即退出整除取余的循环,进入下一个数的判断中。