第53套上机考试试题
已知数据文件IN.dat中存有200个四位数,并已调用读函数rData0把这些数存入数组a中,清编写函数CalVal(),其功能是:把一个四位数的千位数字上的值加上十位数字上的值恰好等于百位数字上的值加上个位数字上的值,并且原四位数是偶数,则统计出满足此条件的四位数的个数count,并把这些四位数按从小到大的顺序存入数组b中。最后调用写函数wData(),把结果count以及数组b中符合条件的四位数输出到OUT.dat文件中。
注意:部分源程序已经给出。程序巾已定义数组a[200]、b[200],已定义变量count。请勿改动数据文件IN.dat中的仟何数据及主函数main()、读函数rData()和写函数wData()的内容。
第53套试题答案及详解
【审题分析】分析题目可知,本题只要实现calVal()函数的功能即可。calVal()要实现的功能是:把一个四位数的各位数字拆分成单个数字,然后按指定方式相加,如果相等且原四位数是偶数,则统计出满足此条件的个数count并把这些四位数按从小到大的顺序存入数组b中。因此解答本题的关键在于如何将一个四位数的每位数拆分成单个数字以及如何判断一个四位数是否为偶数。
【解题思路】对于每一个四位数,用这个四位数除以1000,可得到这个四位数干位上的数字输给变量thou;这个四位数对1000求余数然后再除以100,可得到这个四位数百位上的数字输给变量hun;这个四位数对100求余数然后再除以10,可得到这个四位数十位上的数字输给变量ten;这个四位数对10求余数,可得到这个四位数个位上的数字输给变量data。
然后判断表这式thou+ten=data+hun&&a[i]%2!=1是否成立,如果成立,则把这个数赋给数组b,同时计数变量count加1。最后对数组b中元素进行从小到大的排序。
【参考答案】
【易错分析】用求余运算和除法运算得到一个四位数的各个位上的数字。
【考点链接】求余运算、除法运算、数组元素的排序算法。
责任编辑:小草