在数据文件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]中。
【参考答案】

比一比谁算得快又准.7×8=49÷7=18÷6=9÷9=517-228=200+109=1000- 其他 2020-04-07 …
一个饲养场,养鸡1.8万只,养鸭的只数比鸡少9分之2.养的鸭比鸡少多少只?一个饲养场,养鸡1.8万 数学 2020-05-17 …
关于x的方程x^2+3x-k=0有实数根,则k的取值范围为( )A.k≤-9/4 B.k≥-9 数学 2020-06-27 …
用计算器计算下面各题,看看得数有什么规律.根据规律,你还能再写出几个这样的式子吗?(1)7+9×9 数学 2020-07-09 …
求光栅常数d一束具有两种波长a和d的平行光垂直照射到一衍射光栅上,测得波长a的第三极主极大衍射角和 数学 2020-07-10 …
485-(6×4+32)(45-17)+(9-3)437-5×85×9-102×9-105×6-3 数学 2020-07-18 …
当x为正整数时,x的n次方的个位数随n的变化(1)数0,1,5,6周期为1;4,9的周期为2;2, 数学 2020-07-31 …
在一次青年歌手大奖赛中,10名评委对一名歌手的评分(单位:分)如下:9.5,9.4,9.7,9.7, 其他 2020-11-17 …
在一次青年歌手大奖赛中,10名评委对一名歌手的评分(单位:分)如下:9.5,9.4,9.7,9.7, 数学 2020-11-17 …
“我们可以得到A和B分别与C、D、E之间的关系”这句话用英语怎么表达“我们可以得到A和B分别与C、D 英语 2020-12-25 …