2012年计算机二级C语言上机题库:覆盖更新学生数据方法

5星 · 超过95%的资源 需积分: 3 54 下载量 103 浏览量 更新于2024-07-28 5 收藏 1.52MB DOC 举报
本题是关于全国计算机二级C语言的上机参考题库中的一个编程练习,涉及到了结构体、文件操作以及指针的使用。题目背景是设计一个名为`fun`的函数,该函数的目标是读取一个名为`student.dat`的文件,找到最后一个已存储的学生数据,然后用一个新的学生数据`STUn`替换该数据,同时保持其他学生数据不变。整个过程包括了文件的读写操作。 1. 定义结构体`STU`:首先,我们定义了一个结构体`STU`,用于表示学生信息,包含学号`sno`(long类型)、姓名`name`(字符数组,最大长度为10)和三门课程的成绩`scores`(浮点型数组,长度为3)。 2. 文件操作: - `fun`函数中,通过`fopen`打开文件`filename`(在这个例子中是`"student.dat"`),模式为`"rb+"`,这意味着文件以二进制模式打开,并允许读写。`__1__`处应填入`filename`。 - 使用`fseek`函数定位到文件末尾,这里的参数是`(long)sizeof(STU)`,表示从文件末尾向前移动`STU`的大小个字节。`__2__`处应填入`fp`(文件指针)。 - `fwrite`函数用于将`STUn`中的数据写回文件,第一个参数是需要写入的地址(&n,这里假设`n`是指向`STUn`的指针),第二个参数是每个元素的大小(`sizeof(STU)`),第三个参数是写入的元素个数(1,因为只写入一个`STU`),第四个参数是目标文件指针`__3__`,即`fp`。 3. `main`函数中的操作: - 初始化`STU`数组`t`,存储了5个学生的信息。 - 将`t`数组的内容写入到`student.dat`文件中。 - 再次打开文件,读取数据到`ss`数组。 - 使用循环打印原始数据,显示每个学生的学号、姓名和成绩。 通过这个题目,考生需要掌握如何使用结构体、文件操作以及指针来处理和更新二进制文件中的数据。理解并正确填写`fun`函数中的代码片段是解题的关键,特别是文件指针的使用和文件定位。同时,需要理解文件操作的基本流程,如打开、读写和关闭文件。在实际考试中,这类题目考察了对C语言基础操作的理解和实践能力。