2009年全国计算机等级三级网络技术上机练习习题(83)

来源:计算机等级考试    发布时间:2012-08-27    计算机等级考试视频    评论

  第83套上机考试试题
  函数ReadDat()实现从文件IN.dat中读取20行数据存放到字符串数组str中(每行字符串长度均小于80)。请编写函数charSon(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组str中。最后调用函数WriteDat(),把结果str输出到文件OUT.dat中。
  条件:从字符串中间一分为二,左边部分按宁符的ASCII值降序排序,右边部分按字符的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
  则处理后字符串d c b a e f g h
  4 3 2 1 9 5 6 7 8
  注意:部分源程序已经给出。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
  
  
2009年NCRE考试有新变化
计算机等级考试在线模拟试题
2009年全国计算机等级考试大纲
2009年上半年全国计算机等级考试报名信息汇总
  第83套试题答案及详解
  【审题分析】分析题目可知,本题只要实现charSort()函数的功能即可。charSort()要实现的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组str中。因此解答本题的关键在于如何将题中给定的条件转换成C语言表达式。
  【解题思路】这里采用多重for循环的结构来实现程序的功能。在最外层for循环语句中,自变量i从0递增到19,完成对20行数据的循环扫描。
  对于每一行字符串数组str[i],首先利用字符串函数strlen求出其长度赋给变量str1,str1除以2得到字符串数组str[i]的中间位置。在fbr循环语句巾,自变量j从0开始递增到half-1,每次递增l,在当前for循环的内嵌循环中,自变量k从i+1开始到half,每次递增1,进行相邻字符的ASCII码值大小的比较,如果字符str[il[j]小于字符str[i][k],则两个字符进行交换,实现字符串数组str[i]左半部分字符串的降序排序。然后对str1除以2的余数进行判断,如果余数为1,说明原字符串长度为奇数,则变量half加1,实现最中间的字符不参加排序。再在for循环语句中,自变量j从half开始递增到str1-1,每次递增1,在当前for循环的内嵌循环中,自变量k从i+1开始到str1,每次递增1,进行相邻字符的ASCII码值大小的比较,如果字符str[i][j]大于字符str[i][k],则两个字符进行交换,实现原字符串右边部分的字符按照字符的ASCII值进行升序排序。
  【参考答案】
  
  
  【易错分析】字符串数组str[i]右半部分的字符排序,第一层for循环语句的自变量从half开始递增到str1-1,而不是到str1。
  【考点链接】字符串的排序。

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答