1、三级信息管理技术机试-182 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.下列程序的功能是:选出 1000 至 5000 范围内(包括 1000、5000)符合条件的自然数。条件是:千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的 10 倍。计算并输出这些 4 位自然数的个数 cnt 及这些数的和 sum。请编写函数 countValue()实现程序的要求,最后调用函数 writeDAT()把结果 cnt 和 sum 输出到文件 OUT18.DAT 中。注意:部分源程序已给出。请勿改
2、动主函数 main()和写函数 writeDAT()的内容。试题程序#includestdio.hint cnt,sum;void writeDat();void countValue()void main()cnt=sum=0;countValue();printf(“满足条件的自然数的个数=% d/n“,cnt);printf(“满足条件的自然数的值的和=%d/n“,sum);writeDAT();void writeDAT()FILE*fp;fp=fopen(“OUT18.DAT“,“W“)fprintf(fp,“% d/n% d/n“,cnt,sum);fclose(fp);(分数:1
3、00.00)_三级信息管理技术机试-182 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.下列程序的功能是:选出 1000 至 5000 范围内(包括 1000、5000)符合条件的自然数。条件是:千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的 10 倍。计算并输出这些 4 位自然数的个数 cnt 及这些数的和 sum。请编写函数 countValue()实现程序的要求,最后调用函数 writeDAT()把结果 cnt 和 sum 输出到文件 OUT18.DAT 中。注意:部分源程序已
4、给出。请勿改动主函数 main()和写函数 writeDAT()的内容。试题程序#includestdio.hint cnt,sum;void writeDat();void countValue()void main()cnt=sum=0;countValue();printf(“满足条件的自然数的个数=% d/n“,cnt);printf(“满足条件的自然数的值的和=%d/n“,sum);writeDAT();void writeDAT()FILE*fp;fp=fopen(“OUT18.DAT“,“W“)fprintf(fp,“% d/n% d/n“,cnt,sum);fclose(fp)
5、;(分数:100.00)_正确答案:(void countValue()int i; /*循环控制变量*/int a1,a2,a3,a4; /*定义变量保存 4 位数的每位数字*/for(i=5000;i=1000;i-) /*依次取每一个数进行判断*/a4=i/1000; /*求 4 位数的千位数字*/a3=i%1000/100; /*求 4 位数的百位数字*/a2=i%100/10; /*求 4 位数的十位数字*/a1=i%10; /*求 4 位数的个位数字*/if(a4+a3=a2+a1 & a4+a3=(a1-a4)*10) /*千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的 10 倍*/cnt+; /*则统计满足条件的数的个数*/sum+=i; /*将满足条件的数求和*/)解析:解析 根据题意可知,函数 countValue()要实现两个功能:一是在 1000 至 5000 范嗣内找出满足条件的自然数,二是计算出这些自然数的个数及这些数的和。首先找出满足条件的数,关键在于判断每个数是否满足条件“千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的 10 倍”。然后,计算出这些自然数的个数及这些数的和。