已知文件lN.dat中存有100个产品销售记录,每个产品销售记录由产品代码code(字符型4位)、产品名称name(字符型10位)、单价uprice(整型)、数量amount(整型)、金额sum(长整型)5部分组成。其中:金额=单价×数量。函数RData0读取这100个销售记录并存入结构数组sell中。请编写函数DescSort0,其功能要求:按产品代码从大Nd,进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WData0,把结果输出到文件OUT.dat中。
注意:部分程序已给出。请勿改动主函数main()、读数据函数RData()和输出数据函数WData()的内容。
第3套试题答案及详解
【审题分析】首先我们来看看题中要求我们解决的问题有哪些。①按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列;②将排列结果存入结构数组sell巾。分析题目可知,本题中使用结构数组sell来保存销售记录。产品代码存储在sell结构数组中的code成员中,金额存储存sum成员中。
【解题思路】我们可以利用两个for循环结构对产品销售记录(strcmp(sell[i].code.sell[j].code))两两进 行循环比较,如果这个表达式返回结果值小于0,则进行两个数据的交换,实现产品代码从大到小进行排序。如果上面的表达式的返回值等于0,说明这两个产品的代码相司,则比较seH[i].sum与sell[j].sum的值。如果sell[i].sum[j].sum,则进行两个数据的交换,实现金额从大到小进行排序。
【参考答案】