在数据文件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]中。
【参考答案】
分母是9的真分数如下,把不是最简分数的,约分成最简分数9分之19分之29分之39分之49分之59分 数学 2020-04-12 …
(1)根据分数的意义,把3分之2乘于4分之1等于6分之1改写成两道除法算式是( )和( ).(2) 数学 2020-05-16 …
关于用MATLAB拟合一组数据,得到函数的表达式我的数据是x=[9,11,13,15,17,19, 其他 2020-05-16 …
整数9可以表示成两个连续正整数之和:9=4+5;此外,9还恰可以用两种方法表示成正整数之和:9=4 数学 2020-06-27 …
在1,9.8,9后面写一串这样的数字:先计算原来这4个数的后两个之和8+9=17,取个位数字7写在 其他 2020-07-25 …
有一组数据8、9、9、8、10、10、8、9、10、11、8、8,这组数据的众数是,中位数是,平均数 其他 2020-11-02 …
直接写出得数.9分之4×2=100分之1÷10分之1=9分之5×2÷9分之5×2=10分之9×9分之 数学 2020-11-17 …
为什么1到10中任取一个数字,其他的9个数随即组合,只要知道这三组数据之和就可以知道抽掉的那个数是多 数学 2020-11-20 …
48分之12,21分之14,16分之4,9分之6,18分之12,15分之9,24分之15,45分之2 数学 2020-12-17 …
7.下面各题,只列出算式.(1)一个数是36,它的9分之5是多少?(2)一个书的9分之5是20,这个 数学 2020-12-17 …