1、三级信息管理技术机试-241 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.下列程序的功能是:将大于整数 m 且紧靠 m 的 k 个素数存入数组 xx。请编写函数 num(int m,int k,int xx)实现程序的要求,最后调用函数 readwriteDAT()把结果输出到 out92.dat 文件中。注意:部分源程序已给出。请勿改动主函数 main()和输入输出函数 readwriteDAT()的内容。试题程序:#include stdlib.h#include stdio.hvoid readwriteDAT();void nu
2、m(int m,int k,int xx)void main()int m,n,xx1000;system(“CLS“);printf(“/nPlease enter two integets:“);scanf(“% d,% d“,&m,&n);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(“in92.dat“,“r“);wf=fopen(“out92.dat“,“w“);
3、for(i=0;i10;i + +)fscanf(rf,“% d % d“,&m,&n);mum(m,n,xx);for(m=0;mn;m + +)fprintf(wf,“% d“,xxm);fprintf(wf,“/n“);fclose(rf);fclose(wf);(分数:100.00)_三级信息管理技术机试-241 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.下列程序的功能是:将大于整数 m 且紧靠 m 的 k 个素数存入数组 xx。请编写函数 num(int m,int k,int xx)实现程序的要求,最后调用函数 readwr
4、iteDAT()把结果输出到 out92.dat 文件中。注意:部分源程序已给出。请勿改动主函数 main()和输入输出函数 readwriteDAT()的内容。试题程序:#include stdlib.h#include stdio.hvoid readwriteDAT();void num(int m,int k,int xx)void main()int m,n,xx1000;system(“CLS“);printf(“/nPlease enter two integets:“);scanf(“% d,% d“,&m,&n);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(“in92.dat“,“r“);wf=fopen(“out92.dat“,“w“);for(i=0;i10;i + +)fscanf(rf,“% d % d“,&m,&n);mum(m,n,xx);for(m=0;mn;m + +)fprintf(wf,“% d“,xxm);fprintf(wf,“/n“);fclose(rf);fclose(wf);(分数:100.00)_正确答案:(v
6、oid num(int m,int k,int xx)int i,half,cnt=0; /*定义变量 cnt 来统计已经取得的素数个数*/int data=m+1; /*从大于整数 m 的数开始找*/while(1) /*循环条件始终为真,所以是无条件循环*/half=data/2; /*求出当前数的一半,判断素数*/for(i=2;i=half;i + +) /*如果该数依次除以从 2 到其一半的整数,余数都不是 0,则该数是素数*/if(data%i=0) /*如果余数为 0*/break; /*则退出循环,取下一个数进行判断*/if(ihalf)xxcnt=data;cnt + +; /*确定该数为素数后,将该数存入数组 xx 中,并累计素数的个数*/if(cnt=k) break; /*如果累计素数的个数超过了要求的个数,则退出循环*/data + +; /*如果累计素数的个数小于要求的个数,则继续取下一个数*/)解析:解析 在本题中,首先要结合相关数学知识找出判定一个数是否为素数的方法,从而对数据进行筛选。如果数 a 依次除以从 2 到 a/2 的整数,余数都不是 0,则该数是素数。将符合条件的数存入数组 xx中,使用计数器变量 cnt 来统计已经取得的数的个数。当 cnt 的值小于等于 k 时,即表示所获得素数的个数已经达到了要求,循环停止。