1、三级网络技术机试-133 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.下列程序的功能是:找出所有 100以内(含 100)满足 I,I+4,I+10 都是素数的整数 I(1+10也是在 100以内)的个数 cnt,以及这些 I之和 sum。请编制函数 countValue()实现程序要求,最后调用函数writeDAT()把结果 cnt和 sum输出到文件 out64.dat中(数值 1不是素数)。注意:部分源程序已给出。请勿改动主函数 main()和输出数据函数 writeDAT()的内容。试题程序:#includestdio. hin
2、t cnt, sum;int isPrime(int number)int i, tag=l;if (number=l)return 0;for(i=2;tag i+)if(number%i=0) tag=0;return tag;void countValue ()void maincnt=sum=O;countValue ();printf (“满足条件的整数的个数=%d/n“, cnt);printf (“满足条件的整数的个数=%d/n“, sum);writeDAT ();writeDAT ( )FILE *fp;fp=fopen (“out64. dat“, “w“);fprintf
3、 ( fp, “%d/n%d/n“, cnt, sum);fclose (fp);(分数:100.00)_三级网络技术机试-133 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.下列程序的功能是:找出所有 100以内(含 100)满足 I,I+4,I+10 都是素数的整数 I(1+10也是在 100以内)的个数 cnt,以及这些 I之和 sum。请编制函数 countValue()实现程序要求,最后调用函数writeDAT()把结果 cnt和 sum输出到文件 out64.dat中(数值 1不是素数)。注意:部分源程序已给出。请勿改动主函数
4、 main()和输出数据函数 writeDAT()的内容。试题程序:#includestdio. hint cnt, sum;int isPrime(int number)int i, tag=l;if (number=l)return 0;for(i=2;tag i+)if(number%i=0) tag=0;return tag;void countValue ()void maincnt=sum=O;countValue ();printf (“满足条件的整数的个数=%d/n“, cnt);printf (“满足条件的整数的个数=%d/n“, sum);writeDAT ();write
5、DAT ( )FILE *fp;fp=fopen (“out64. dat“, “w“);fprintf ( fp, “%d/n%d/n“, cnt, sum);fclose (fp);(分数:100.00)_正确答案:(void countValue()int i,count=O,xx30;cnt=O;sum=O;for (i=2; i90; i+) /*找数的范围为 100以内*/if (isPrime (i) /*如果该数为素数,则将它存入数组 xx中,并统计个数*/xx count =i;count+;for (i=O; icount; i+) /*如果数组 xx中的素数加 4各加 10得到的数仍为素数*/if (isPrime (xx i +4) /*将满足条件的数组 xx中的数求和*/)解析:解析本题考查的知识点如下:(1)循环结构与判断结构的嵌套使用。(2)判断结构中多个条件的布尔运算。题中要求判断在 100以内,i,i+4,i+10 都是素数的个数。因为 i+10也必须在 100以内,1 不是素数,我们可以从 2开始判断到 89即可(90 是偶数,明显不是素数)。可以先找出 2到 89之间素数的个数,再判断这些素数加 4和加 10后是否还是素数。加 4是素数与加 10是素数必须同时满足,所以两个条件间用“与”运算。