1、2018 年计算机等级考试二级 C 语言程序题练习 35 及答案解析(总分:100.00,做题时间:60 分钟)一、程序填空题(总题数:1,分数:30.00)程序通过定义学生结构体变量,存储了学生的 学号、姓名和三门课的成绩。函数 fun 的功能是将 形参 a所指结构体变量中的数据赋给函数中的结构 体变量 b,并修改 b 中的学号和姓名,最后输出修 改后的数据。例如:a 所指变量中的学号、姓名和三门课的成 绩依次是 10001、“ZhangSan”、95、80、88,则修 改后输出 b 中的数据应为 10002、“LiSi”、95、80、 88 。请在程序的下画线处填入正确的内容并把下画 线删
2、除,使程序得出正确的结果。注意:源程序保存在考生文件夹下的 BLANK1. C 中。不得增行或删行,也不得更改程序的结构!给定源程序如下。(分数:30)(1)(分数:10)填空项 1:_(2)(分数:10)填空项 1:_(3)(分数:10)填空项 1:_二、程序改错题(总题数:1,分数:30.00)给定程序 MODI1.C 中函数 fun 的功能是从 s 所 指字符串中删除所有小写字母 c。请改正程序中的错误,使它能计算出正确的 结果。注意:不要改动 main 函数,不得增行或删行, 也不得更改程序的结构!给定源程序如下。(分数:30.00)_三、程序设计题(总题数:1,分数:40.00)假定
3、输入的字符串中只包含字母和*号。请编 写函数 fun,它的功能是将字符串中的前导*号全 部移到字符串的尾部。函数 fun 中给出的语句仅供参考。例如,字符串中的内容为*A*BC*DEF*G*,移动后,字符串中的内容应当是 A*BC*DEF*G*。在编写函数时,不 得使用 C 语言提供的字符串函数。注意:部分源程序保存在文件 PROG1.C 中。请勿改动主函数 main 和其他函数中的任何内 容,仅在函数 fun 的花括号中填入编写的若干语句。给定源程序如下。/*向前复制字符串,请填写相应的语句完 成其功能*/(分数:40.00)_2018 年计算机等级考试二级 C 语言程序题练习 35 答案解
4、析(总分:100.00,做题时间:60 分钟)一、程序填空题(总题数:1,分数:30.00)程序通过定义学生结构体变量,存储了学生的 学号、姓名和三门课的成绩。函数 fun 的功能是将 形参 a所指结构体变量中的数据赋给函数中的结构 体变量 b,并修改 b 中的学号和姓名,最后输出修 改后的数据。例如:a 所指变量中的学号、姓名和三门课的成 绩依次是 10001、“ZhangSan”、95、80、88,则修 改后输出 b 中的数据应为 10002、“LiSi”、95、80、 88 。请在程序的下画线处填入正确的内容并把下画 线删除,使程序得出正确的结果。注意:源程序保存在考生文件夹下的 BLA
5、NK1. C 中。不得增行或删行,也不得更改程序的结构!给定源程序如下。(分数:30)(1)(分数:10)填空项 1:_ (正确答案:a)解析:题目要求先将形参 a 所指结构体变 量中的数据赋给函数中的结构体变量 b,所以此处 b=a。(2)(分数:10)填空项 1:_ (正确答案:b.name)解析:通过 strcpy 函数修改 b 中的学生姓名, 注意结构变量成员的表示方法。(3)(分数:10)填空项 1:_ (正确答案:scorei)解析:printf 函数输出结果。二、程序改错题(总题数:1,分数:30.00)给定程序 MODI1.C 中函数 fun 的功能是从 s 所 指字符串中删除
6、所有小写字母 c。请改正程序中的错误,使它能计算出正确的 结果。注意:不要改动 main 函数,不得增行或删行, 也不得更改程序的结构!给定源程序如下。(分数:30.00)_正确答案:((1)sj+=si;或sj=si;j+;(2) sj= 0;)解析:由循环条件 if(si!=c)可知,如果字符串中的字 符不是c,则将保留该字符到 sj位置,然后下标 j 进行加 1 操作。循环结束后要在新串的结尾加上0。三、程序设计题(总题数:1,分数:40.00)假定输入的字符串中只包含字母和*号。请编 写函数 fun,它的功能是将字符串中的前导*号全 部移到字符串的尾部。函数 fun 中给出的语句仅供参
7、考。例如,字符串中的内容为*A*BC*DEF*G*,移动后,字符串中的内容应当是 A*BC*DEF*G*。在编写函数时,不 得使用 C 语言提供的字符串函数。注意:部分源程序保存在文件 PROG1.C 中。请勿改动主函数 main 和其他函数中的任何内 容,仅在函数 fun 的花括号中填入编写的若干语句。给定源程序如下。/*向前复制字符串,请填写相应的语句完 成其功能*/(分数:40.00)_正确答案:()解析:函数 fun 的功能是将字符串中的前导*号全部 移到字符串的尾部,解题思路如下:(1)定义一个指针并指向字符串的首地址;(2)利用循环语句找出字符串的前导*号的个 数 n ;(3)利用循环语句把剩余的字符拷贝到另一个 字符串中;(4)在字符串的末尾接上 n 个*号 0