1、三级信息管理技术机试-253 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.下列程序的功能是:计算出自然数 SIX 和 NINE,它们满足的条件是 SIX+SIX+SIX=NINE+NINE 的个数cnt,以及满足此条件的所有 SIX 与 NINE 的和 sum。请编写函数 countValue()实现程序要求,最后调用函数 writeDAT()把结果 cnt 和 sum 输出到文件 OUT82.DAT 中。其中的 S、I、X、N、E 各代表一个十进制数字。注意:部分源程序已给出。请勿改动主函数 main()和写函数 writeDAT()
2、的内容。试题程序:#include stdio.hint cnt,sum;void writeDAT();void countValue()void main()cnt=sum=0;countValue();printf(“满足条件的个数=% d/n“,cnt);printf(“满足条件所有的 SIX 与 NINE 的和=% d/n“,sum);writeDAT();void writeDAT()FILE * fp;fP=fopen(“OUT82.DAT“,“w“);fprintf(fp,“% d/n% d/n“,cnt,sum);fclose(fp);(分数:100.00)_三级信息管理技术
3、机试-253 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.下列程序的功能是:计算出自然数 SIX 和 NINE,它们满足的条件是 SIX+SIX+SIX=NINE+NINE 的个数cnt,以及满足此条件的所有 SIX 与 NINE 的和 sum。请编写函数 countValue()实现程序要求,最后调用函数 writeDAT()把结果 cnt 和 sum 输出到文件 OUT82.DAT 中。其中的 S、I、X、N、E 各代表一个十进制数字。注意:部分源程序已给出。请勿改动主函数 main()和写函数 writeDAT()的内容。试题程序:
4、#include stdio.hint cnt,sum;void writeDAT();void countValue()void main()cnt=sum=0;countValue();printf(“满足条件的个数=% d/n“,cnt);printf(“满足条件所有的 SIX 与 NINE 的和=% d/n“,sum);writeDAT();void writeDAT()FILE * fp;fP=fopen(“OUT82.DAT“,“w“);fprintf(fp,“% d/n% d/n“,cnt,sum);fclose(fp);(分数:100.00)_正确答案:(void countV
5、alue()int i,j; /*定义变量分别存储 SIX(i)和 NINE(j)*/int a2,b4,b3,b2; /*计算满足条件的数*/for(i=100,j=1000;i=999&j=9999;i=i+2) /*当 i 为 3 位偶数,并且 j 没有增加到 5 位数时,循环继续*/j=3*i/2; /*计算满足条件的 4 位数*/a2=i%100/10;b4=j/1000;b3=j%1000/100;b2=j%100/10;if(j=1000 & j=9999 & a2=b3 & b4=b2)/*如果满足条件 SIX+SIX+SIX=NINE+NINE*/ /*即一个 3 位数乘以
6、3 再除以 2 余数为 0,且所得的数为 4 位数*/cnt + +; /*统计满足条件的数的个数*/sum+=i+j; /*求满足此条件的所有 SIX 与 NINE 的和*/printf(“SIX=% d,NINE=% d/n“,i,j);)解析:解析 根据题意,要求的是满足 3 位数乘以 3 等于 4 位数乘以 2 的数的个数。我们可以使用循环结构对所有的 3 位数进行判断,若某个 3 位数乘以 3 整除以 2 所得的数是 4 位整数,且该 3 位数的十位数值等于该 4 位数的百位数值,该 4 位数的千位数值等于其十位数值,则这个 3 位数是满足条件的数。当判断的数不再是 3 位数或者处理后所得的数大于 9999,则退出循环。在循环内部用计数器统计满足条件的数的个数及它们的和值。