1、2018 年计算机等级考试二级 C 语言程序题练习 40 及答案解析(总分:100.00,做题时间:60 分钟)一、程序填空题(总题数:1,分数:30.00)程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到 studentdat 文件中。函数 fun 的功能是从指定文件中找出指定学号的学生数据,读入此学生数据,对该生的分数进行修改,使每门课的分数加 3 分,修改后重写文件中该学生的数据,即用该学生的新数据覆盖原数据,其他学生数据不变;若找不到,则什么都不做。请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。注意:源程序保存在
2、考生文件夹下的 BLANK1C 中。不得增行或删行,也不得更改程序的结构!给定源程序如下。(分数:30)(1).(分数:10)填空项 1:_(2).(分数:10)填空项 1:_(3).(分数:10)填空项 1:_二、程序改错题(总题数:1,分数:30.00)给定程序 MODI1.C 中函数 fun 的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本算法是先对字符串中的头两个元素进行排序,然后把第三个字符插入到前两个字符中,插入后前三个字符依然有序,再把第四个字符插入到前三个字符中。待排序的字符串已在主函数中赋予。请改正程序中的错误,使它能得出正确结果。注意:不要改动
3、 main 函数,不得增行或删行,也不得更改程序的结构。给定源程序如下。(分数:30.00)_三、程序设计题(总题数:1,分数:40.00)N 名学生的成绩已在主函数中放入一个带头结点的链表结构中,h 指向链表的头结点。请编写函数 fun,它的功能是找出学生的最高分,由函数值返回。注意:部分源程序保存在文件 PROG1C 中。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入编写的若干语句。给定源程序如下。(分数:40.00)_2018 年计算机等级考试二级 C 语言程序题练习 40 答案解析(总分:100.00,做题时间:60 分钟)一、程序填空题(总题数:1
4、,分数:30.00)程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到 studentdat 文件中。函数 fun 的功能是从指定文件中找出指定学号的学生数据,读入此学生数据,对该生的分数进行修改,使每门课的分数加 3 分,修改后重写文件中该学生的数据,即用该学生的新数据覆盖原数据,其他学生数据不变;若找不到,则什么都不做。请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。注意:源程序保存在考生文件夹下的 BLANK1C 中。不得增行或删行,也不得更改程序的结构!给定源程序如下。(分数:30)(1).(分数:10)填空项 1:
5、_ (正确答案:fp)解析:while 循环语句的循环条件是判断文件是否结束,配合 feof 函数来完成,其一般形式为:feof(文件指针);。(2).(分数:10)填空项 1:_ (正确答案:=)解析:根据题目要求确定 if 语句条件表达式的内容,满足条件后跳出循环。(3).(分数:10)填空项 1:_ (正确答案:fp)解析:文件定位函数 fseek(),调用形式;fseek(文件指针,位移量,起始点);,此处文件指针是 fp。二、程序改错题(总题数:1,分数:30.00)给定程序 MODI1.C 中函数 fun 的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基
6、本算法是先对字符串中的头两个元素进行排序,然后把第三个字符插入到前两个字符中,插入后前三个字符依然有序,再把第四个字符插入到前三个字符中。待排序的字符串已在主函数中赋予。请改正程序中的错误,使它能得出正确结果。注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。给定源程序如下。(分数:30.00)_正确答案:(1)n=strlen(aa);(2)ch=aai; )解析:插入排序算法:先对字符串中的前两个元素进行排序,然后第三个元素插入到前两个元素中,三个元素依然有序,依此类推,完成排序。(1)此处考查 strlen 函数的格式,应改为 strlen(aa)。(2)程序中并没有
7、定义变量 c,该语句的作用是将元素 ai的值赋给中间变量 ch,以与其他元素进行比较并交换,所以应改为 ch=ai。三、程序设计题(总题数:1,分数:40.00)N 名学生的成绩已在主函数中放入一个带头结点的链表结构中,h 指向链表的头结点。请编写函数 fun,它的功能是找出学生的最高分,由函数值返回。注意:部分源程序保存在文件 PROG1C 中。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入编写的若干语句。给定源程序如下。(分数:40.00)_正确答案:()解析:本题使用循环语句遍历链表中的每个结点,用判断语句比较结点数据的域大小。注意,h 是一个指向结构体类型的指针变量,若要引用它所指向的结构体中的某一成员时,要用指向运算符”-”。