1、计算机三级数据库技术-124 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.下列程序的功能是:计算 500800 之间素数的个数 cnt,并按所求素数的值从大到小的顺序再计算其间隔减、加之和,即第 1 个素数-第 2 个素数+第 3 个素数-第 4 个素数+第 5 个素数的值 sum。请编写函数 countValue()实现程序功能,最后调用函数 WriteDat(),把结果 cnt 和 sum 输出到文件 OUT.DAT 中。注意:请勿改动主函数 main()和写函数 WriteDAT()的内容。 【试题程序】 #include std
2、io.h int cnt, sum; void writeDAT () ; void countValue () void main () cnt=sum=0; countValue () ; printf (“素数的个数 = %dn“, cnt) ; printf ( “按要求计算所得的值 = %dn“, sum); writeDAT () ; void writeDAT () FILE * fp; fp = fopen ( “OUT. DAT“, “w“ ) ; fprintf (fp, “%dn%dn“, cnt, sum) ; fclose (fp) ; (分数:100.00)_计算机
3、三级数据库技术-124 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.下列程序的功能是:计算 500800 之间素数的个数 cnt,并按所求素数的值从大到小的顺序再计算其间隔减、加之和,即第 1 个素数-第 2 个素数+第 3 个素数-第 4 个素数+第 5 个素数的值 sum。请编写函数 countValue()实现程序功能,最后调用函数 WriteDat(),把结果 cnt 和 sum 输出到文件 OUT.DAT 中。注意:请勿改动主函数 main()和写函数 WriteDAT()的内容。 【试题程序】 #include stdio.h
4、 int cnt, sum; void writeDAT () ; void countValue () void main () cnt=sum=0; countValue () ; printf (“素数的个数 = %dn“, cnt) ; printf ( “按要求计算所得的值 = %dn“, sum); writeDAT () ; void writeDAT () FILE * fp; fp = fopen ( “OUT. DAT“, “w“ ) ; fprintf (fp, “%dn%dn“, cnt, sum) ; fclose (fp) ; (分数:100.00)_正确答案:()
5、解析:void countValue() int i,j; /*定义循环控制变量*/ int half; /*判断素数时所需值的存储变量*/ int xx100; /*定义整型数组,用来保存素数*/ for(i=800;i500;i-) /*在这个范围内进行挑选*/ half=i/2; for(j=2;j=half;j+) /*判断是否素数*/ if(i%j=0) break; /*如果该数不是素数,则退出此层循环*/ if(jhalf) /*如果该数是素数,则将该数存入数组 xx 中*/ xxcnt=i; cnt+; /*统计素数的个数*/ for(i=0,j=-1;icnt;i+) /*计
6、算这些素数的间隔加、减之和*/ j*=-1; /*用 j 来控制间隔的加减号*/ sum+=j*xxi; 考点 本题考查对指定范围内数的筛选和计算。考查的知识点主要包括:判断素数的算法,if 条件判断结构,逻辑表达式。判断素数的算法,if 条件判断结构,逻辑表达式。 解析 此题属于数学类问题。分析题干,本题存在 2 个关键点:关键点 1 如何找出题设范围内的素数;关键点 2 如何计算满足条件的数的间隔加、减之和。 本题的解题思路为:通过循环控制,依次判断大于等于 500 小于 800 范围内的自然数是否是素数,将满足条件的数保存到数组中。最后对其计算间隔加减之和。这里可以通过“乘以一个变量“来控制其加减符号,具体方法是设置变量的初始值为“1“,每次循环都使该变量乘以“-1“就可实现。 判断素数的算法; 间隔加减的实现方法。