早教吧 育儿知识 作业答案 考试题库 百科 知识分享
早教吧考试题库频道 --> 计算机类考试 -->计算机三级 -->

在数据文件in.dat中有200个正整数,且每个数都在1000至9999之间。函数readDat是读取这200个数存放

题目

在数据文件in.dat中有200个正整数,且每个数都在1000至9999之间。函数readDat是读取这200个数存放到数组 aa中。请编制函数isSort,其函数的功能是:要求按每个数的后三位的大小进行升序排列,如果出现后三位相等的数值,则对这些数值按原始4位数据进行降序排列,将排序后的前10个数存入数组bb中。最后调用函数writeDat把结果bb输出到文件out.dat中。 例:处理前60125099901270258088 处理后 90126012702580885099 注意:部分源程序存在test.c文件中。 请勿改动数据文件in.dat中的任何数据、主函数main、读函数readDat和写函数writeDat的内容。

参考答案
正确答案:
【审题关键句】按每个数的后三位升序排列,然后取出满足此条件的前10个数依次存入数组,如果后三位的数值相等,则按原先的数值进行降序排列。
【解题思路】
①首先定义两个循环变量循环i、j和一个用于数据交换的整型变量m。
②然后通过两个for循环对数组aa[]中的两个相邻元素按照其后三位值的大小进行从小到大的排序,本题中已给出所有的整数都是四位数,因此,可以通过aa[i]%1000或aa[j]%1000计算得到当前数组元素的后三位值,然后再进行比较,如果两个数需要转换位置,可通过中间变量m进行转换。
③上一步骤是两个元素后三位不相同的情况,根据题意,需要再增加一个else if语句判断两个相邻元素的后三位数一样的情况,如果相同,则需要继续判断两个四位数的大小,并按从大小的顺序排序。
④最后,通过一个for循环依次读取aa[i]数组中前10个元素并保存到数组bb[i]中。
【参考答案】