1、国家三级(网络技术)机试模拟试卷 66及答案与解析 一、程序设计题 1 下列程序的功能是:计算 500 800之间素数的个数 cnt,并按所求素数的值从小到大的顷序,再计算其间隔加、减之和,即第 1个素数 -第 2个素数十第 3个素数 -第 4个素数 +第 5个素数 的值 sum。请编写函数 countValue()实现程序的要求,最后调用函数 writeDaI()把结果 cnt和 sum输出到文件 OUT66.DAT中。 注意:部分源程序已给出。 请勿改动主函数 main()和写函数 writeDAT()的内容。 试题程序; #include stdio. h int cnt, sum; v
2、oid countValue() void main() cnt=sum=0; countValue (); printf (“素数的个数 =%dn“, ont); printf (“按要求计算得值 =%dn“, sum ); writeDAT (); writeDAT () FILE *fp; fp=fopen ( “OUT66. DAT“, “w“ ); fprintf (fp, “%dn%dn“, cnt, sum); fclose (fp); 国家三级(网络技术)机试模拟试卷 66答案与解析 一、程序设计题 1 【正确答案】 void countValue() int i,j,half
3、,yy100; for(i=500;i=half) /*如果该数是素数 ,则将该数存入数组 yy中 */ yycnt=i; cnt+; /*统计素数的个数 */ for (i=0, j =-1; i cnt; i+) /*计算这些素数的间隔加、减之和 */ j=j*-1; sum+=j*yyi; 【试题解析】 本题考查的知识点如下: (1)利用循环和 “%” 进行素数的判断。 (2)间隔加、减的实现。 在本题中,首先要找出 判断素数的方法。若一个数 a依次除以从 2到 a/2的数所得的余数都不是 0,则这个数是素数。用此方法依次判断出从 500到 800区间内的素数。由题意可知,第 1, 3, 5 个素数计算加法,第 2, 4, 6 个素数计算减法。减去 1个正整数就是加上负的这个正整数,所以可以将这个正整数乘以 -1进行加法。使用循环实现求和,在奇数次的循环中,每个素数乘以 1,偶数次的循环中,素数乘以 -1,就可实现间隔加、减。