第50套上机考试试题
已知数据文件IN.dat中存有300个旧位数,并已调用读函数Rdata0把这些数存入数组a中,请编写函数ditiNum(),其功能是:求出千位数上的数减百位数卜.的数减十位数上的数减个位数上的数人于0的个数count,再把所有满足此条件的阴位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序。最后调用写函数Wdata(),把结果输出到OUT.dat文件中。
例如,9123,9-1-2-3>0,则该数满足条件存入数组b中,满足条件count加1。9812,9-8-1-2<0,则该数不满足条件,count不变。
注意:部分源程序已经给出。程序中已定义数组a[300]、b[300],已定义变量count。请勿改动主函数main()、读函数Rdata()和写函数Wdata()的内容。
第50套试题答案及详解
【审题分析】分析题目可知,本题只要实现diffNum()函数的功能即可。diffNum()要实现的功能是:求出千位数上的数减百位数上的数减十位数上的数减个位数上的数大于零的个数count,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序。因此解答本题的关键在于如何将一个四位数的每位拆分成单个数字,做加减运算将满足条件的存入数组,并比较大小。
【解题思路】对于每一个四位数,用这个旧位数除以1000,可得到这个四位数千位上的数字输给变量hou;这个四数对1000求余然后再除以100,可得到这个四位数百位上的数字输给变量hum;这个四位数对100求余然后再除以10,町得到这个四位数十位上的数字输给变量ten;这个四位数对10求余,可得到这个四位数个位上数字输给变量data。
然后判断表达式thou-hun-ten-data是否大于0,如果大于0,则把这个数赋给数组b,同时计数变量count加1。最后利用双重循环对数组b中元素进行从小到大的排序。
【参考答案】
【易错分析】用求余运算和除法运算得到一个四位数的各个位上的数字。
【考点链接】求余运算、除法运算、数组中元素的排序算法。
责任编辑:小草