c语言(2)统计上题CJ.dat 文件中每个学生的总成绩,并将原有数据和计算出的总分数存放在磁盘文件“stud.dat“中。程序运行后,查看是否生成stud.dat,并用文本编辑工具(如记事本)查看stud.dat中的数据是否正确。
时间: 2023-07-15 16:12:37 浏览: 144
C语言 学生成绩统计.doc
以下是一个参考代码,实现了题目要求的功能:
```c
#include <stdio.h>
struct student {
int id; // 学号
char name[20]; // 姓名
int score1; // 成绩1
int score2; // 成绩2
int score3; // 成绩3
int total_score; // 总分数
};
int main() {
FILE *fp_in, *fp_out;
fp_in = fopen("CJ.dat", "rb"); // 以二进制方式读取文件
fp_out = fopen("stud.dat", "wb"); // 以二进制方式写入文件
if (fp_in == NULL || fp_out == NULL) {
printf("文件打开失败!");
return 1;
}
struct student stu; // 定义一个学生结构体变量
while (fread(&stu, sizeof(struct student), 1, fp_in) == 1) { // 读取一个学生的数据
stu.total_score = stu.score1 + stu.score2 + stu.score3; // 计算总分数
fwrite(&stu, sizeof(struct student), 1, fp_out); // 将原有数据和总分数写入文件
}
fclose(fp_in);
fclose(fp_out);
return 0;
}
```
上述代码中,我们定义了一个 `struct student` 结构体来存储每个学生的数据,包括学号、姓名、三门成绩和总分数。然后,我们打开 `CJ.dat` 文件和 `stud.dat` 文件,并以二进制方式读取和写入文件。接着,我们使用 `while` 循环读取 `CJ.dat` 文件中的每个学生数据,并计算总分数。最后,将原有数据和总分数写入 `stud.dat` 文件中。
注意,我们使用 `fread()` 和 `fwrite()` 函数来读取和写入二进制文件,这些函数的参数中需要指定读取或写入的数据类型和数据长度。在本程序中,我们使用 `sizeof(struct student)` 来指定每个学生数据的长度。
阅读全文