1、2018 年计算机等级考试二级 C 语言程序题练习 32 及答案解析(总分:100.00,做题时间:60 分钟)一、程序填空题(总题数:1,分数:30.00)给定程序中,函数 fun 的功能是在形参 ss 所指 字符串数组中,删除所有串长超过 k 的字符串,函 数返回所剩字符串的个数。ss 所指字符串数组中共 有 N 个字符串,且串长小于 M。请在程序的下画线处填入正确的内容并把下画 线删除,使程序得出正确的结果。注意:源程序保存在考生文件夹下的 BLANK1. C 中。不得增行或删行,也不得更改程序的结构!给定源程序如下。(分数:30)(1)(分数:10)填空项 1:_(2)(分数:10)填
2、空项 1:_(3)(分数:10)填空项 1:_二、程序改错题(总题数:1,分数:30.00)给定程序 MODI1.C 中函数 fun 的功能是逐个 比较 p、q 所指两个字符串对应位置中的字符,把 ASCII 值大或相等的字符依次存放到 c 所指数组中, 形成一个新的字符串。例如,若主函数中 a 字符串为 aBCDeFgH, b 字 符串为 ABcd,则 c 中的字符串应为 aBcdeFgH。请改正程序中的错误,使它能得出正确结果。注意:不要改动 main 函数,不得增行或删行, 也不得更改程序的结构。给定源程序如下。(分数:30.00)_三、程序设计题(总题数:1,分数:40.00)假定输入
3、的字符串中只包含字母和*号。请编 写函数 fun,它的功能是除了字符串前导的*号之外, 将串中其他*号全部删除。在编写函数时,不得使 用 C 语言提供的字符串函数。函数 fim 中给出的语 句仅供参考。例如,字符串中的内容为*A*BC* DEF*G*,删除后,字符串中的内容应当是 *ABCDEFG。注意:部分源程序保存在文件 PROG1.C 中。请勿改动主函数 main 和其他函数中的任何 内容,仅在函数 fun 的花括号中填入编写的若干语句。给定源程序如下。(分数:40.00)_2018 年计算机等级考试二级 C 语言程序题练习 32 答案解析(总分:100.00,做题时间:60 分钟)一、
4、程序填空题(总题数:1,分数:30.00)给定程序中,函数 fun 的功能是在形参 ss 所指 字符串数组中,删除所有串长超过 k 的字符串,函 数返回所剩字符串的个数。ss 所指字符串数组中共 有 N 个字符串,且串长小于 M。请在程序的下画线处填入正确的内容并把下画 线删除,使程序得出正确的结果。注意:源程序保存在考生文件夹下的 BLANK1. C 中。不得增行或删行,也不得更改程序的结构!给定源程序如下。(分数:30)(1)(分数:10)填空项 1:_ (正确答案:N)解析:for 循环语句的作用是遍历字符串数组 中的每一个字符串,所以循环变量 i 的循环条件是 iN。(2)(分数:10
5、)填空项 1:_ (正确答案:k)解析:题目要求删除串长度小于 k 的字符串, 所以 if 条件语句的条件表达式是 len=k。(3)(分数:10)填空项 1:_ (正确答案:ssi)解析:通过字符串拷贝函数将串长不大于 k 的字符串另存,并记录个数。二、程序改错题(总题数:1,分数:30.00)给定程序 MODI1.C 中函数 fun 的功能是逐个 比较 p、q 所指两个字符串对应位置中的字符,把 ASCII 值大或相等的字符依次存放到 c 所指数组中, 形成一个新的字符串。例如,若主函数中 a 字符串为 aBCDeFgH, b 字 符串为 ABcd,则 c 中的字符串应为 aBcdeFgH
6、。请改正程序中的错误,使它能得出正确结果。注意:不要改动 main 函数,不得增行或删行, 也不得更改程序的结构。给定源程序如下。(分数:30.00)_正确答案:((1) int k=0;(2) while (*pll*q)解析:(1)变量 k 存放数组 c 的下标,因此应初始化为 0.(2) while 循环语句的循环条件是判断两个字符 串是否到达结尾。三、程序设计题(总题数:1,分数:40.00)假定输入的字符串中只包含字母和*号。请编 写函数 fun,它的功能是除了字符串前导的*号之外, 将串中其他*号全部删除。在编写函数时,不得使 用 C 语言提供的字符串函数。函数 fim 中给出的语 句仅供参考。例如,字符串中的内容为*A*BC* DEF*G*,删除后,字符串中的内容应当是 *ABCDEFG。注意:部分源程序保存在文件 PROG1.C 中。请勿改动主函数 main 和其他函数中的任何 内容,仅在函数 fun 的花括号中填入编写的若干语句。给定源程序如下。(分数:40.00)_正确答案:()解析:函数 fun 的功能:除了字符串前导的*号之外, 将串中其他*号全部删除。解答本题,(1)定义一 个临时指针 a,初始指向原串首地址;(2)利用循环 语句把字符串前导*号拷贝到原串;(3)继续移动 指针,把串中和串尾的非*号字符拷贝到原串;(4)为修改后的字符串赋结束字符0。