1、三级信息管理技术机试-244 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.下列程序的功能是:选出 1001000 之间的所有个位数字与十位数字之和被 10 除所得余数恰是百位数字的素数。计算并输出上述这些素数的个数 cnt,以及这些素数值的和 sum。请编写函数 countValue()实现程序要求,最后调用函数 writeDAT()把结果 cnt 和 sum 输出到文件 OUT90.DAT 中。注意:部分源程序已给出。请勿改动主函数 main()和写函数 writeDAT()的内容。试题程序:#include stdio.hint c
2、nt,sum;void writeDAT();void countValue()void main()cnt=sum=0;countValue();printf(“素数的个数=% d/n“,cnt);printf(“满足条件素数值的和=% d“,sum);writeDAT();void writeDAT()FILE * fp;fp=fopen(“OUT90.DAT“,“w“);fprintf(fp,“% d/n% d/n“,cnt,sum);fclose(fp);(分数:100.00)_三级信息管理技术机试-244 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分
3、数:100.00)1.下列程序的功能是:选出 1001000 之间的所有个位数字与十位数字之和被 10 除所得余数恰是百位数字的素数。计算并输出上述这些素数的个数 cnt,以及这些素数值的和 sum。请编写函数 countValue()实现程序要求,最后调用函数 writeDAT()把结果 cnt 和 sum 输出到文件 OUT90.DAT 中。注意:部分源程序已给出。请勿改动主函数 main()和写函数 writeDAT()的内容。试题程序:#include stdio.hint cnt,sum;void writeDAT();void countValue()void main()cnt=
4、sum=0;countValue();printf(“素数的个数=% d/n“,cnt);printf(“满足条件素数值的和=% d“,sum);writeDAT();void writeDAT()FILE * fp;fp=fopen(“OUT90.DAT“,“w“);fprintf(fp,“% d/n% d/n“,cnt,sum);fclose(fp);(分数:100.00)_正确答案:(void countValue()int i,j; /*定义循环控制变量*/int a3,a2,a1; /*定义变量存储 3 位数每位的数字*/int half;for(i=101;i1000;i + +)
5、 /*在该范围内寻找符合条件的数*/a3=i/100; /*求百位数字*/a2=i%100/10; /*求十位数字*/a1=i%10; /*求个位数字*/if(a3=(a2+a1)%10) /*如果个位数字与十位数字之和被 10 除所得余数恰是百位数字*/half=i/2;for(j=2;j=half;j + +) /*进一步判断该数是否为素数*/if(i%j=0)break; /*如果不是素数,则跳出循环,接着判断下一个数*/if(jhalf) /*如果是素数*/cnt + +; /*计算这些素数的个数 cnt*/sum+=i; /*计算这些素数的和值 sum*/)解析:解析 本题的解题思路是利用一个 for 循环依次取得 1001000 之间的数,接着求得当前所取得的数的各个数位上的数字,然后判断该数个位数字与十位数字之和被 10 除所得的余数是否恰好等于百位上的数字。如果该条件成立,接着去判断原数是否是素数。最后将满足以上两个条件的数累加到变量sum(素数的和值)中,同时通过计数器变量 cnt 统计出素数的个数。