1、全国计算机等级考试三级网络技术机试真题 2008 年 9 月及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.请编写一个函数 jS Value(int m, int k, int xx),该函数的功能是:将小于整数 m 且紧靠 m 的 k个素数存入数组 xx 并传回。调用函数 writeDat()读取 10 组数据,分别得出结果且把结果输出到文件out.dat 中。注意:部分源程序给出如下。例如:若输入“17,5”,则应输出“13,11,7,5,3”。请勿改动主函数 main()和输出数据函数 readwriteDat()的内容。试题源程序#
2、includeconio.h#includestdio.hvoid readwriteDat();void num(int m, int k, int xx)main()int m, n, xx1000;System(“cls“);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(“i
3、n.dat“,“r“);wf=fopen(“out.dat“,“w“);for(i=0;i10;i+)Scanf(rf,“%d%d“,for(m=0;mn;m+) fprintf(wf,“%d“,xxm);fprintf(wf,“/n“);fclose(rf);fclose(wf);(分数:100.00)_全国计算机等级考试三级网络技术机试真题 2008 年 9 月答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.请编写一个函数 jS Value(int m, int k, int xx),该函数的功能是:将小于整数 m 且紧靠 m 的 k个素
4、数存入数组 xx 并传回。调用函数 writeDat()读取 10 组数据,分别得出结果且把结果输出到文件out.dat 中。注意:部分源程序给出如下。例如:若输入“17,5”,则应输出“13,11,7,5,3”。请勿改动主函数 main()和输出数据函数 readwriteDat()的内容。试题源程序#includeconio.h#includestdio.hvoid readwriteDat();void num(int m, int k, int xx)main()int m, n, xx1000;System(“cls“);printf(“/nPlease enter two inte
5、gers:“);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(“in.dat“,“r“);wf=fopen(“out.dat“,“w“);for(i=0;i10;i+)Scanf(rf,“%d%d“,for(m=0;mn;m+) fprintf(wf,“%d“,xxm);fprintf(wf,“/n“);fclose(rf);fclose(wf);(分数:1
6、00.00)_正确答案:(void num(int m, int k, int xx)int i,j,n;for(n=m-1,i=0;ik;n-) /*该循环用了 2 个循环变量,n 用来跟踪 m 之前的数,所以每趟减 1,i 用来计算找到素数的个数,所以该循环结束的条件为 i 等于 k*/for(j=2;j=n/2;j+) /*该循环用于判断 n 是否是素数*/if(n%j=0)break;if(jn/2)xxi+=n; /*找到一个素数,先存入 xxi,然后 i 值增 1*/)解析:解析本题主要考查的是素数及其计算问题。用 for 循环来跟踪 m 之前的 k 个素数,对于 m 之后的数 n,判断其是否为素数,若是则将其赋值给 xxi,同时变量 i 增 1。变量 i 的取值范围为 0 到 k-1,用来控制 k 个素数被存入数组 xx。判断 n 是否为素数,只要内嵌一个 for 循环,使循环变量 j 的取值范围为 2 到 n 的一半。判断 n 是否能整除 j,如果有一个能整除,则跳出内层 for 循环时 jn/2,表示 n 不是素数,否则内层 for 循环结束的条件为 jn/2,表示 n 为素数。