假设有若干学生,每个学生有3门功课,从键盘上输入学生有关信息(学号、姓名、成绩),并计算其平均成绩,将原有数据和平均分保存在磁盘文件record中。具体要求如下: 学生有关信息采用结构体类型存储。 fwrite()函数实现数据块输出到文件record。 结合循环结构实现数据输入和输出。
时间: 2024-01-21 08:17:12 浏览: 62
下面是一份C语言代码,实现输入学生信息并计算平均成绩并保存到磁盘文件中:
```c
#include <stdio.h>
struct student {
char id[10];
char name[20];
float score[3];
float average;
};
int main() {
int n; // 学生人数
printf("请输入学生人数:");
scanf("%d", &n);
struct student stu[n];
// 输入学生信息
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的学号、姓名和3门功课成绩:\n", i+1);
scanf("%s %s %f %f %f", stu[i].id, stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
// 计算平均成绩
stu[i].average = (stu[i].score[0] + stu[i].score[1] + stu[i].score[2]) / 3.0;
}
// 将学生信息写入磁盘文件
FILE *fp;
if ((fp = fopen("record", "wb")) == NULL) {
printf("写文件失败!\n");
return 1;
}
fwrite(stu, sizeof(struct student), n, fp);
fclose(fp);
printf("学生信息已保存到磁盘文件record中!\n");
return 0;
}
```
注意,因为我们要将结构体数组写入文件,所以需要使用二进制模式打开文件,并且使用fwrite函数将数据块写入文件。读取文件时也需要使用二进制模式打开文件,并使用fread函数读取数据块。
阅读全文