国家三级(数据库技术)机试模拟试卷64 (题后含答案及解析)
题型有:1. 程序设计题
程序设计题
1. 下列程序的功能是:找出所有100以内(含100)满足I,I+4,I+10都是素数的整数I(1+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=1; 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 i,count=0,xx[30]; int j,k,m; cnt=0; sum=0; for(i=2;i<90;i++) /*找数的范围为100以内*/if(isPrime(i)) /*如果该数为素数,则将它存入数组xx中,并统计个数*/{ xx[count]=i; count++;} for(i=0;i<count;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是素数必须同时满足,所以两个条件间用“与”运算。
因篇幅问题不能全部显示,请点此查看更多更全内容