1、2018 年计算机等级考试二级 C 语言程序题练习 31 及答案解析(总分:100.00,做题时间:60 分钟)一、程序填空题(总题数:1,分数:30.00)给定程序中,函数 fun 的功能是在形参 ss 所指 字符串数组中査找与形参 t 所指字符串相同的串, 找到后返回该串在字符串数组中的位置(下标值), 未找到则返回-1。ss 所指字符串数组中共有 N 个内 容不同的字符串,且串长小于 M。请在程序的下画线处填入正确的内容并把下画 线删除,使程序得出正确的结果。注意:源程序保存在考生文件夹下的 BLANK1. C 中。不得增行或删行,也不得更改程序的结构!给定源程序如下。(分数:30)(1
2、)(分数:10)填空项 1:_(2)(分数:10)填空项 1:_(3)(分数:10)填空项 1:_二、程序改错题(总题数:1,分数:30.00)给定程序 MODI1.C 中函数 fun 的功能是从整数 1055 之间,选出能被 3 整除、且有一位上的数是 5 的那些数,并把这些数放在 b 所指的数组中,这些 数的个数作为函数值返回。规定,函数中 a1 放个位 数,a2 放十位数。请改正程序中的错误,使它能得出正确结果。注意:不要改动 main 函数,不得增行或删行, 也不得更改程序的结构。给定源程序如下。(分数:30.00)_三、程序设计题(总题数:1,分数:40.00)假定输入的字符串中只包
3、含字母和*号。请编写函数 fun,它的功能是:将字符串尾部的*号全部 删除,前面和中间的*号不删除。例如,字符串中的内容为*A*BC*DEF *G*,删除后,字符串中的内容应当是*A*BC*DEF*G。在编写函数时,不得使用 C 语 言提供的字符串函数。注意:部分源程序保存在文件 PROG1.C 中。请勿改动主函数 main 和其他函数中的任何 内容,仅在函数 fun 的花括号中填入编写的若干语句。给定源程序如下。(分数:40.00)_2018 年计算机等级考试二级 C 语言程序题练习 31 答案解析(总分:100.00,做题时间:60 分钟)一、程序填空题(总题数:1,分数:30.00)给定
4、程序中,函数 fun 的功能是在形参 ss 所指 字符串数组中査找与形参 t 所指字符串相同的串, 找到后返回该串在字符串数组中的位置(下标值), 未找到则返回-1。ss 所指字符串数组中共有 N 个内 容不同的字符串,且串长小于 M。请在程序的下画线处填入正确的内容并把下画 线删除,使程序得出正确的结果。注意:源程序保存在考生文件夹下的 BLANK1. C 中。不得增行或删行,也不得更改程序的结构!给定源程序如下。(分数:30)(1)(分数:10)填空项 1:_ (正确答案:N)解析:变量 i 是循环变量,它的取值范围是 0 N。(2)(分数:10)填空项 1:_ (正确答案:i)解析:如果
5、 ss 所指字符串数组中的字符串和 t 所指字符串相同的话,则返回其下标值,即 return i;否则返回-1,即 return-1;。(3)(分数:10)填空项 1:_ (正确答案:-1)解析:在 main 函数中输出最后结果,判断函 数返回值 n,如果 n=-1,说明没有找到,否则输出 n。二、程序改错题(总题数:1,分数:30.00)给定程序 MODI1.C 中函数 fun 的功能是从整数 1055 之间,选出能被 3 整除、且有一位上的数是 5 的那些数,并把这些数放在 b 所指的数组中,这些 数的个数作为函数值返回。规定,函数中 a1 放个位 数,a2 放十位数。请改正程序中的错误,
6、使它能得出正确结果。注意:不要改动 main 函数,不得增行或删行, 也不得更改程序的结构。给定源程序如下。(分数:30.00)_正确答案:((1) a2=k/10;(2) return i;)解析:(1) a2 存放十位数,所以是 a2=k/10,此处是一 个书写错误。(2) 根据题意,要返回能被 3 整除的数的个数, 从循环体中可以知道其个数是由 i 来计算的,所以 返回的是 i 。三、程序设计题(总题数:1,分数:40.00)假定输入的字符串中只包含字母和*号。请编写函数 fun,它的功能是:将字符串尾部的*号全部 删除,前面和中间的*号不删除。例如,字符串中的内容为*A*BC*DEF *G*,删除后,字符串中的内容应当是*A*BC*DEF*G。在编写函数时,不得使用 C 语 言提供的字符串函数。注意:部分源程序保存在文件 PROG1.C 中。请勿改动主函数 main 和其他函数中的任何 内容,仅在函数 fun 的花括号中填入编写的若干语句。给定源程序如下。(分数:40.00)_正确答案:()解析:对于一个字符串要删除其尾部的*号,只需要 在最后一个不是*号的字符后面加上结束符号0。 具体操作为:首先找到字符串的结尾,然后从最后一 个字符开始往前逐个判断是否为*号,直到找到非* 号字符为止,最后在该字符后面加上结束符号0。