1、2018 年计算机等级考试二级 C 语言程序题练习 44 及答案解析(总分:100.00,做题时间:60 分钟)一、程序填空题(总题数:1,分数:30.00)给定程序中,函数 fun 的功能是将带头结点的单向链表逆置,即若原链表中从头至尾结点数据域依次为2、4、6、8、10,逆置后,从头至尾结点数据域依次为 10、8、6、4、2。请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。注意:源程序保存在考生文件夹下的 BLANK1C 中。不得增行或删行,也不得更改程序的结构!给定源程序如下。(分数:30)(1).(分数:10)填空项 1:_(2).(分数:10)填空项 1:_(3
2、).(分数:10)填空项 1:_二、程序改错题(总题数:1,分数:30.00)给定程序 MODI1C 中函数 fun 的功能是计算 s 所指字符串中含有 t 所指字符串的数目,并作为函数值返回。请改正函数 fun 中指定部位的错误,使它能得出正确的结果。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!给定源程序如下。(分数:30.00)_三、程序设计题(总题数:1,分数:40.00)请编写函数 fun,函数的功能是将放在字符串数组中的 M 个字符串(每串的长度不超过 N),按顺序合并组成一个新的字符串。函数 fun 中给出的语句仅供参考。例如,字符串数组中的 M 个字符串
3、为AAAABBBBBBBCC则合并后的字符串的内容应是 AAAABBBBBBBCC。提示:strcat(a,b)的功能是将字符串 b 复制到字符串 a 的串尾上,成为一个新串。注意:部分源程序保存在文件 PROG1C 中。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入编写的若干语句。给定源程序如下。(分数:40.00)_2018 年计算机等级考试二级 C 语言程序题练习 44 答案解析(总分:100.00,做题时间:60 分钟)一、程序填空题(总题数:1,分数:30.00)给定程序中,函数 fun 的功能是将带头结点的单向链表逆置,即若原链表中从头至尾结点数
4、据域依次为2、4、6、8、10,逆置后,从头至尾结点数据域依次为 10、8、6、4、2。请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。注意:源程序保存在考生文件夹下的 BLANK1C 中。不得增行或删行,也不得更改程序的结构!给定源程序如下。(分数:30)(1).(分数:10)填空项 1:_ (正确答案:next)解析:本空考查了为 P 赋初值,根据题目的要求是将带头结点的单向链表逆置可知,P 的初值应该为 h-next。 (2).(分数:10)填空项 1:_ (正确答案:0)解析:if 判断语句表明当 p 等于什么时就要返回,因此只能当 p 等于 NULL 时返回,不
5、用做后面的链表的逆置了。(3).(分数:10)填空项 1:_ (正确答案:r)解析:把 q 的指针向后移动,才能实现将带头结点的单向链表逆置。因此本空填写 r。 二、程序改错题(总题数:1,分数:30.00)给定程序 MODI1C 中函数 fun 的功能是计算 s 所指字符串中含有 t 所指字符串的数目,并作为函数值返回。请改正函数 fun 中指定部位的错误,使它能得出正确的结果。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!给定源程序如下。(分数:30.00)_正确答案:(1)r=t;(2)if(*r=0) )解析:从字符串 s 中找出子字符串的方法是:从第一个字符开
6、始,对字符串进行遍历,若 s 串的当前字符等于 t串的第一个字符,两字符串的指针自动加 1,继续比较下一个字符;若比较至字符串 t 的末尾,则跳出循环;若 s 串的字符与 t 串的字符不对应相同,则继续对 s 串的下一个字符进行处理。三、程序设计题(总题数:1,分数:40.00)请编写函数 fun,函数的功能是将放在字符串数组中的 M 个字符串(每串的长度不超过 N),按顺序合并组成一个新的字符串。函数 fun 中给出的语句仅供参考。例如,字符串数组中的 M 个字符串为AAAABBBBBBBCC则合并后的字符串的内容应是 AAAABBBBBBBCC。提示:strcat(a,b)的功能是将字符串 b 复制到字符串 a 的串尾上,成为一个新串。注意:部分源程序保存在文件 PROG1C 中。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入编写的若干语句。给定源程序如下。(分数:40.00)_正确答案:()解析:本题考查字符串连接操作,使用 strcat 函数将 ai的内容复制到 b 的末尾。