1、2018 年计算机等级考试二级 C 语言程序题练习 45 及答案解析(总分:100.00,做题时间:60 分钟)一、程序填空题(总题数:1,分数:30.00)给定程序中,函数 fun 的功能是将不带头结点的单向链表结点数据域中的数据从小到大排序,即若原链表结点数据域从头至尾的数据为 10、4、2、8、6,排序后链表结点数据域从头至尾的数据为2、4、6、8、10。请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。注意:源程序保存在考生文件夹下的 BLANK1C 中。不得增行或删行,也不得更改程序的结构!给定源程序如下。(分数:30)(1).(分数:10)填空项 1:_(2).
2、(分数:10)填空项 1:_(3).(分数:10)填空项 1:_二、程序改错题(总题数:1,分数:30.00)给定程序 MODI1C 中函数 fun 的功能是将 s 所指字符串中的字母转换为按字母序列的后续字母(Z 转换为A,z 转换为 a),其他字符不变。请改正函数 fun 中指定部位的错误,使它能得出正确的结果。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!给定源程序如下。(分数:30.00)_三、程序设计题(总题数:1,分数:40.00)请编写函数 fun,函数的功能是移动一维数组中的内容;若数组中有 n 个整数,要求把下标从 0 到 P(含P,Pn-1)的数组元
3、素平移到数组的最后。例如,一维数组中的原始内容为 1、2、3、4、5、6、7、8、9、10,P 的值为 3。移动后,一维数组中的内容应为 5、6、7、8、9、10、1、2、3、4。注意:部分源程序保存在文件 PROG1C 中。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入编写的若干语句。给定源程序如下。(分数:40.00)_2018 年计算机等级考试二级 C 语言程序题练习 45 答案解析(总分:100.00,做题时间:60 分钟)一、程序填空题(总题数:1,分数:30.00)给定程序中,函数 fun 的功能是将不带头结点的单向链表结点数据域中的数据从小到大
4、排序,即若原链表结点数据域从头至尾的数据为 10、4、2、8、6,排序后链表结点数据域从头至尾的数据为2、4、6、8、10。请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。注意:源程序保存在考生文件夹下的 BLANK1C 中。不得增行或删行,也不得更改程序的结构!给定源程序如下。(分数:30)(1).(分数:10)填空项 1:_ (正确答案:p-next)解析:从第 2 个 while 循环可知,q 的初值应该为 p 的下一个,故此空应该填写 p-next。(2).(分数:10)填空项 1:_ (正确答案:q)解析:第 2 个 while 循环表示的是每次从链表剩下的树中
5、找出最小的数,因此此空应该以 q 是否为空来判断循环是否结束,所以此空应该填写 q。(3).(分数:10)填空项 1:_ (正确答案:p-next)解析:当找到一个最小的数时 p 应该向后移,因此此空应该填写 p-next。二、程序改错题(总题数:1,分数:30.00)给定程序 MODI1C 中函数 fun 的功能是将 s 所指字符串中的字母转换为按字母序列的后续字母(Z 转换为A,z 转换为 a),其他字符不变。请改正函数 fun 中指定部位的错误,使它能得出正确的结果。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!给定源程序如下。(分数:30.00)_正确答案:(1
6、)while(*s)或 while(*s!=0)(2)s+; )解析:(1)通过 while 语句可对字符串所有字符进行遍历,循环条件是对当前字符进行判断,若当前字符不是字符串结尾,则对其进行其他操作。 (2)因为该循环通过指针 s 的移动遍历字符串,所以每循环一次要使指针向后移动一个位置,而不是将指针所指的元素加 1。三、程序设计题(总题数:1,分数:40.00)请编写函数 fun,函数的功能是移动一维数组中的内容;若数组中有 n 个整数,要求把下标从 0 到 P(含P,Pn-1)的数组元素平移到数组的最后。例如,一维数组中的原始内容为 1、2、3、4、5、6、7、8、9、10,P 的值为
7、3。移动后,一维数组中的内容应为 5、6、7、8、9、10、1、2、3、4。注意:部分源程序保存在文件 PROG1C 中。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入编写的若干语句。给定源程序如下。(分数:40.00)_正确答案:()解析:本题要求把下标从 0 到 P(含 P,Pn-1)的数组元素平移到数组的最后,可以根据输入的 P 值,通过 for循环语句,将 p+1 到 n-1(含 n-1)之间的数组元素依次向前移动 p+1 个存储单元,即 wj-1=wj,同时将 0 到 P 个数组元素逐一赋给数组 wn-1,也就是通过语句 wn-1=ch 来实现此操作。