第5套上机考试试题
函数RData0实现从文件IN.dat中读取一篇英文文章存入到宁符串数组str中,请编写函数DescSort(),其功能是:以行为甲单位对字符按从人到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组str中,最后调用函数WData(),把结果str输出到文件OUT.dat中。原始数据文件存放的格式是:每行的宽度均小于80个宁符(含标点符号和空格)。
例如,原文:dAeBfC.
CcbbAA
结果:fedCBA.
cbbCAA
注意:部分程序已给出。请勿改动主函数main()、读数据函数RData()和输出数据函数WData()的内容。
第5套试题答案及详解
【审题分析】分析题目可知,题中需要解决的问题就是实现DescSort函数的功能问题,而DescSort函数的功能是:实现“以行为单位对字符按从火到小的顺序进行排序,排序后韵结果仍按行重新存入字符串数组str中”。 因此本题的关键在于如何判断将字符串拆分成单独的字母,之后就可以通过一个三重循环来将所有字符逐个比较字母的大小,并存入数组str中。【解题思路】首先利用三重循环中的第一层循环将字符读入数组str1中,然后利用内层的二重循环对文章中每一行的字符进行两两比较,较小的字符往行后放,较大的字符往行前放,这样就实现了以行为单位对字符从大到小的排序。在程序中的语句是if(str[i][j]<str[i][k])成立,str[i][j]和str[i][k]就交换数据。
【参考答案】
【易错分析】变量j的取值范围是0到str1-1,而变量k的取值范围是j+1到str1。
【考点链接】C语言的for循环语句的用法、两个字符的交换。
责任编辑:小草