第55套上机考试试题
已知文件IN.dat中存有若干个(不多于200个)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组number中。请编写函数CalValue(),其功能要求是:①求出文件中所有的正整数个数totNum.(求求这些数中的各位数字之和是奇数的个数totCnt,以及满足此条件的这些数的算术平均值totave。最后调用函数writeDat()把所求的结果输出到OUT.dat文件中。
注意:部分源程序已经给出。清勿改动主函数main()、读函数ReadDat()和函数writeDat()的内容。
第55套试题答案及详解
【审题分析】分析题曰可知,本题只要实现calValue()函数的功能即可。calValue()要实现的功能是:①求出文件中共有的正整数个数totNum;②求这些数中的各位数字之和是奇数的个数totCnt,以及满足此条件的这些数的算术平均值totave。因此解答本题的关键在于如何判断一个数是否为正整数。
【解题思路】在for循环语句中,自变最i从0递增到MAXNUM对数组number中的每个数进行判断,如果mumber[i]的值大于0,说明number[i]的值为正整数,统计正整数个数的变量totNum加1;然后用除法和求余的方法对number[i]的值求出其各个位上的数字,分别记录到变量thou、hun、ten、data中,这些数字的和对2求余数,如果余数不为零,则统计变量totCnt加1,同时把number[i]的值加到totave上,得到这些数的和。退出循环后,用totave的值除以totCnt,就得到了这些数的算术平均值totave。
【参考答案】
【易错分析】用number[i]除以1000得到number[i]千位上的数字,用number[i]对1000求余然后再除以100得到number[i]百位上的数字,用number[i]对100求余然后再除以10得到number[i]十位上的数字,用numbcr[i]对10求余数得到nlll=nber[i]个位上的数字。在求算术平均值时,要把整型转换成双精度型数据。
【考点链接】用除法和求余运算求一个四位数各位上的数字、把整型转换成双精度型数据。
责任编辑:小草