1、2018 年计算机等级考试二级 C 语言程序题练习 38 及答案解析(总分:100.00,做题时间:60 分钟)一、程序填空题(总题数:1,分数:30.00)程序通过定义学生结构体变量,存储了学生的 学号、姓名和三门课的成绩。函数 fun 的功能是将 形参 a所指结构体变量 s 中的数据进行修改,并把 a 中存储的地址作为函数值返回主函数,在主函数中 输出修改后的数据。例如,a 所指变量 s 中的学号、姓名和三门课 的成绩依次是 10001、“ZhangSan”、95、80、88,修 改后输出 t 所指变量的数据应为 10002、“LiSi“、96、 81、 89。请在程序的下画线处填入正确的
2、内容并把下画 线删除,使程序得出正确的结果。注意:源程序保存在考生文件夹下的 BLANK1. C 中。不得增行或删行,也不得更改程序的结构!给定源程序如下。(分数:30)(1)(分数:10)填空项 1:_(2)(分数:10)填空项 1:_(3)(分数:10)填空项 1:_二、程序改错题(总题数:1,分数:30.00)给定程序 MODI1.C 中函数 fun 的功能是从 N 个 字符串中找出最长的那个串,并将其地址作为函数 值返回。各字符串在主函数中输入,并放入一个字符串 数组中。所找到的最长字符串在主函数中输出。请改正程序中的错误,使它能得出正确结果。注意:不要改动 main 函数,不得增行或
3、删行, 也不得更改程序的结构。给定源程序如下。(分数:30.00)_三、程序设计题(总题数:1,分数:40.00)函数 fun 的功能是:将 a、b 中的两个两位正整 数合并形成一个新的整数放在 c 中。合并的方式是 将 a中的十位和个位数依次放在变量 c 的百位和个 位上,b 中的十位和个位数依次放在变量 c 的十位和千位上。例如,当 a=45,b=12 时,调用该函数后, c=2415。注意:部分源程序保存在文件 PROG1.C 中。 数据文件 IN.DAT 中的数据不得修改。请勿改动主函数 main 和其他函数中的任何内 容,仅在函数 fun 的花括号中填入编写的若干语句。给定源程序如下
4、。(分数:40.00)_2018 年计算机等级考试二级 C 语言程序题练习 38 答案解析(总分:100.00,做题时间:60 分钟)一、程序填空题(总题数:1,分数:30.00)程序通过定义学生结构体变量,存储了学生的 学号、姓名和三门课的成绩。函数 fun 的功能是将 形参 a所指结构体变量 s 中的数据进行修改,并把 a 中存储的地址作为函数值返回主函数,在主函数中 输出修改后的数据。例如,a 所指变量 s 中的学号、姓名和三门课 的成绩依次是 10001、“ZhangSan”、95、80、88,修 改后输出 t 所指变量的数据应为 10002、“LiSi“、96、 81、 89。请在程
5、序的下画线处填入正确的内容并把下画 线删除,使程序得出正确的结果。注意:源程序保存在考生文件夹下的 BLANK1. C 中。不得增行或删行,也不得更改程序的结构!给定源程序如下。(分数:30)(1)(分数:10)填空项 1:_ (正确答案:struct student *)解析:函数定义时,类型标识符指明了本函 数的类型,前面已经多次提到,函数的类型实际上 是函数返回值的类型。该题中,用结构指针变量作 为函数类型标识符。(2)(分数:10)填空项 1:_ (正确答案:a-scorei)解析:通过循环语句对指针 a 所指结构体变量 中的 3 门成绩进行修改,所以此处为 a-scorei。(3)(
6、分数:10)填空项 1:_ (正确答案:a)解析:通过 return 语句将形参 a 返回给主调 函数。二、程序改错题(总题数:1,分数:30.00)给定程序 MODI1.C 中函数 fun 的功能是从 N 个 字符串中找出最长的那个串,并将其地址作为函数 值返回。各字符串在主函数中输入,并放入一个字符串 数组中。所找到的最长字符串在主函数中输出。请改正程序中的错误,使它能得出正确结果。注意:不要改动 main 函数,不得增行或删行, 也不得更改程序的结构。给定源程序如下。(分数:30.00)_正确答案:((1) char *fun(char (*sq)M)(2) return sp;)解析:
7、函数 fun 的形参为字符串指针数组,每个元素 指向一个长度为 M 的字符串,要找出其中最长的字 符串,可先假设指针数组的第 1 个元素所指的字符 串最长,之后对字符串指针数组进行遍历,若遇字 符串长度大于待定最长字符串的长度,则令该字符 串为待定最长字符串,如此循环直至指针数组末尾, 即可得到最长字符串的地址。(1)此处是函数定义错误,根据返回值类型可 知该函数应定义为字符型指针函数。(2)由 for 循环体可知,指针 sp 指向长度最长 的字符串,因此应返回 sp。三、程序设计题(总题数:1,分数:40.00)函数 fun 的功能是:将 a、b 中的两个两位正整 数合并形成一个新的整数放在
8、 c 中。合并的方式是 将 a中的十位和个位数依次放在变量 c 的百位和个 位上,b 中的十位和个位数依次放在变量 c 的十位和千位上。例如,当 a=45,b=12 时,调用该函数后, c=2415。注意:部分源程序保存在文件 PROG1.C 中。 数据文件 IN.DAT 中的数据不得修改。请勿改动主函数 main 和其他函数中的任何内 容,仅在函数 fun 的花括号中填入编写的若干语句。给定源程序如下。(分数:40.00)_正确答案:()解析:本题的主要问题如何取出 a 和 b 的个位数和十 位数,取出后如何表示成 c 中相应的位数。由于 a 和 b 都是只有两位的整数,所以分别对它们除 10 可 得到它们的十位数(a/10),分别用 10 对它们求余可 得到它们的个位数(a%10)。得到后对应乘以 1000、 100、10、1 就可得到 c 的千位数、百位数、十位数 和个位数。注意使用 c 时要进行指针运算。