1、2018 年计算机等级考试二级 C 语言程序题练习 33 及答案解析(总分:100.00,做题时间:60 分钟)一、程序填空题(总题数:1,分数:30.00)给定程序中,函数 fun 的功能是在形参 ss 所指字符串数组中,查找含有形参 substr 所指子串的所有字符串并输出,若没找到则输出相应信息。ss 所指字符串数组中共有 N 个字符串,且串长小于 M。程序中库函数 strstr(s1,s2)的功能是在 s1 串中查找 s2 子串,若没有,函数值为 NULL,若有,为非 NULL。请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。注意:源程序保存在考生文件夹下的 BL
2、ANK1. C 中。不得增行或删行,也不得更改程序的结构! 给定源程序如下。(分数:30)(1)(分数:10)填空项 1:_(2)(分数:10)填空项 1:_(3)(分数:10)填空项 1:_二、程序改错题(总题数:1,分数:30.00)给定程序 MODI1.C 中函数 fun 的功能是求三个 数的最小公倍数。例如,给主函数中的变量 x1、x2、x3 分别输入 15、11、2,则输出结果应当是 330。请改正程序中的错误,使它能得出正确结果。注意:不要改动 main 函数,不得增行或删行, 也不得更改程序的结构。给定源程序如下。(分数:30.00)填空项 1:_三、程序设计题(总题数:1,分数
3、:40.00)假定输入的字符串中只包含字母和*号。请编 写函数 fun,它的功能是只删除字符串前导和尾部的 *号,串中字母之间的*号都不删除。形参 n 给出了 字符串的长度,形参 h 给出了字符串中前导*号的 个数,形参 e 给出了字符串中最后*号的个数。在 编写函数时,不得使用 C 语言提供的字符串函数。例如,字符串中的内容为*A*BC* DEF*G*,删除后,字符串中的内容应当是 A*BC*DEF*G。注意:部分源程序保存在文件 PROG1.C 中。请勿改动主函数 main 和其他函数中的任何内容, 仅在函数 fun 的花括号中填入编写的若干语句。给定源程序如下。(分数:40.00)_20
4、18 年计算机等级考试二级 C 语言程序题练习 33 答案解析(总分:100.00,做题时间:60 分钟)一、程序填空题(总题数:1,分数:30.00)给定程序中,函数 fun 的功能是在形参 ss 所指字符串数组中,查找含有形参 substr 所指子串的所有字符串并输出,若没找到则输出相应信息。ss 所指字符串数组中共有 N 个字符串,且串长小于 M。程序中库函数 strstr(s1,s2)的功能是在 s1 串中查找 s2 子串,若没有,函数值为 NULL,若有,为非 NULL。请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。注意:源程序保存在考生文件夹下的 BLANK
5、1. C 中。不得增行或删行,也不得更改程序的结构! 给定源程序如下。(分数:30)(1)(分数:10)填空项 1:_ (正确答案:N)解析:此处考查 for 循环语句中循环变量 i 的 取值范围,题目指出共有 N 个字符串,所以 i 的取 值范围为 0 N-1。(2)(分数:10)填空项 1:_ (正确答案:substr )解析:strstr(s1,s2)的功能是在 s1 串中查找 s2 子串。题目要求在 ss 字符串数组中,查找 substr 所 指的字符串,故应填 substr。(3)(分数:10)填空项 1:_ (正确答案:0)解析:此处使用 if 条件语句来判断査找结果,由 prin
6、tf(“nDont found ! n“)可知此处需要填写没 有找到的条件,即 find=0。二、程序改错题(总题数:1,分数:30.00)给定程序 MODI1.C 中函数 fun 的功能是求三个 数的最小公倍数。例如,给主函数中的变量 x1、x2、x3 分别输入 15、11、2,则输出结果应当是 330。请改正程序中的错误,使它能得出正确结果。注意:不要改动 main 函数,不得增行或删行, 也不得更改程序的结构。给定源程序如下。(分数:30.00)填空项 1:_ (正确答案:(1) fun(int x,int y,int z)或 int fun(int x,int y,int z)(2)
7、return j;)解析:(1)定义函数时,必须为每个形参分别定义变 量类型。(2)通过 return 语句将最小公倍数 j 返回主调 函数。三、程序设计题(总题数:1,分数:40.00)假定输入的字符串中只包含字母和*号。请编 写函数 fun,它的功能是只删除字符串前导和尾部的 *号,串中字母之间的*号都不删除。形参 n 给出了 字符串的长度,形参 h 给出了字符串中前导*号的 个数,形参 e 给出了字符串中最后*号的个数。在 编写函数时,不得使用 C 语言提供的字符串函数。例如,字符串中的内容为*A*BC* DEF*G*,删除后,字符串中的内容应当是 A*BC*DEF*G。注意:部分源程序保存在文件 PROG1.C 中。请勿改动主函数 main 和其他函数中的任何内容, 仅在函数 fun 的花括号中填入编写的若干语句。给定源程序如下。(分数:40.00)_正确答案:()解析:由于程序已经给出前导*号和尾部*号的个数, 所以只要用循环语句将中间的字符保留起来。注意 循环变量 i 的初值(h)和终止值(n-e),由于 h 和 e 分 别表示 a 中的前导*号和尾部*号的个数,n 是字符 串的长度,所以从 ah到 an-e-1之间的所有字符都 要保留。循环结束后在新串的尾部加上结束符0。