早教吧 育儿知识 作业答案 考试题库 百科 知识分享
早教吧考试题库频道 --> 计算机类考试 -->计算机三级 -->

下列程序的功能是:找出所有100以内(含100)满足I,I+4,I+10都是素数的整数重(I+10也是在100以内)的

题目

下列程序的功能是:找出所有100以内(含100)满足I,I+4,I+10都是素数的整数重(I+10也是在100以内)的个数cnt,以及这些I之和sum。请编制函数countValue()实现程序要求,最后调用函数writeDAT()把结果cnt和sum输出到文件out64.dat中(数值1不是素数)。

注意:部分源程序已给出。

请勿改动主函数main()和输出数据函数writeDAT()的内容。

试题程序:

include<stdio.h>

int cnt,sum;

int isPrime (int number)

{

int i,tag=l;

if (number== 1 )

return 0;

for(i=2;tag && i<=number/2;i++)

if (number%i==0) tag=0;

return tag;

}

void countValue ( )

{

}

void main ( )

{

cnt=sum=0;

countValue ( );

printf ("满足条件的整数的个数=%d\n", cnt);

printf ("满足条件的整数的和值=%d\n", sum);

writeDAT ( );

}

writeDAT ( )

{

FILE *fp;

fp=fopen("out64.dat" , "w");

fprintf (fp, "%d\n%d\n", cnt, sum);

fclose (fp);

}

参考答案
正确答案:void countValue ( ) { int icount=0xx[30]; int j k m; cnt=0; sum=0; for (i=2; i90; i++) /*找数的范围为100以内*/ if (isPrime (i)) /*如果该数为素数则将它存入数组xx中并统计个数*/ { xx [ count ]=i; count++; } for (i=0; icount; i++) /*如果数组xx中的素数加4和加10得到的数仍为素数*/ if (isPrime (xx [i] +4) &&isPrime (xx [i] +10) ) { cnt ++; /*统计满足条件的数的个数*/ sum+=xx [i]; /*将满足条件的数组xx中的数求和*/ ) }
void countValue ( ) { int i,count=0,xx[30]; int j, k, m; cnt=0; sum=0; for (i=2; i90; i++) /*找数的范围为100以内*/ if (isPrime (i)) /*如果该数为素数,则将它存入数组xx中,并统计个数*/ { xx [ count ]=i; count++; } for (i=0; icount; i++) /*如果数组xx中的素数加4和加10得到的数仍为素数*/ if (isPrime (xx [i] +4) &&isPrime (xx [i] +10) ) { cnt ++; /*统计满足条件的数的个数*/ sum+=xx [i]; /*将满足条件的数组xx中的数求和*/ ) } 解析:本题考查的知识点如下:
(1)循环结构与判断结构的嵌套使用。
(2)判断结构中多个条件的布尔运算。
题中要求判断在100以内,i,i+4,i+10都是素数的个数。因为i+10也必须在100以内,1不是素数,我们可以从2开始判断到89即可(90是偶数,明显不是素数)。可以先找出2到89之间素数的个数,再判断这些素数加4和加10后是否还是素数。加4是素数与加10是素数必须同时满足,所以两个条件间用“与”运算。