全国计算机等级三级网络技术上机练习习题(76)
来源:优易学  2010-1-15 10:01:52   【优易学:中国教育考试门户网】   资料下载   IT书店

  第76套上机考试试题
  函数RData0实现从文件IN.dat中读取20行数据存放到字符串数组str中(每行字符串长度均小于80)。请编写函数stringSort(),其功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按按行重新存入字符串数组str中。最后调用函数WData(),把结果stf输出到OUT.dat文件中。
  条件:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中问的字符不参加处理,字符仍放在原位置上。
  例如,位置0 1 2 3 4 5 6 7 8
  原字符串 a b c d h g f e
  1 2 3 4 9 8 7 6 5
  处理后字符串h g f e d c b a
  位置8 7 6 5 9 4 3 2 1
  注意:部分源程序已经给出。请勿改动主函数main()、读数据函数RData()和输出数据函数WData()的内容。
  
  

  第76套试题答案及详解
  【审题分析】分析题目可知,本题只要实现stringSort()函数的功能即可。stringSort()要实现的功能是:以行为单位对字符串按给定的条件进行排序.排序后的结果仍按行重新存入字符串数组str中。因此解答本题的关键在于如何将题中的条件转换成C语言表达式。
  【解题思路】在最外层for循环语句中,自变量i从0递增到19,完成对20行数据的循环。
  对于每一行字符串数组str[i],首先利用字符串函数strlen求出其长度赋给变量str1,str1除以2得到字符串数组str[i]的中间位置。在for循环语句,自变量i从0开始递增到half-1,每次递增1,在当前for循环的内嵌循环中,自变量k从i+1开始到half,每次递增1,进行相邻字符的ASCII码值人小的比较,如果字符str[i][j]小于字符str[i][k],则两个字符进行交换,实现字符串数组str[i]左半部分字符串的降序排列。然后在for循环语句中,变量i从字符串str[i]左半部分的最后一个字符开始,变量k从字符串str[i]的最后一个字符开始,进行字符串数组str[i]左半部分与右半部分的字符交换,直到变量j的值为0。
  【参考答案】
  
  【易错分析】字符串数组str[i]左半部分与右半部分的字符交换,是从左半部分和右半部分的最后一个字符开始的。
  【考点链接】字符串的排序、字符串的交换。

责任编辑:小草

文章搜索:
 相关文章
热点资讯
热门课程培训