8.有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学号,姓名,三门课成绩),计算出每名 学生的平均成绩,将所有数据存放在磁盘文件"stud.dat"中。c语言
时间: 2024-09-09 19:02:00 浏览: 46
有5个学生,么个学生有三门课成绩,从键盘键入以上数据,存放在文件中
5星 · 资源好评率100%
要完成这个任务,你需要使用C语言编写一个程序,该程序从键盘接收五个学生的学号、姓名和三门课程的成绩,计算每个学生的平均成绩,并将所有这些信息保存到一个名为"stud.dat"的磁盘文件中。下面是一个简单的示例代码,展示如何实现这个功能:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义学生结构体
typedef struct {
char id[20]; // 学号
char name[50]; // 姓名
float score[3]; // 三门课成绩
float average; // 平均成绩
} Student;
int main() {
FILE *fp; // 文件指针
Student students[5]; // 存储五个学生数据的数组
int i, j;
// 打开文件用于写入,如果文件不存在则创建
fp = fopen("stud.dat", "wb");
if (fp == NULL) {
printf("文件打开失败!\n");
return -1;
}
// 从键盘输入数据
for (i = 0; i < 5; i++) {
printf("请输入第%d个学生的学号: ", i + 1);
scanf("%s", students[i].id);
printf("请输入第%d个学生的姓名: ", i + 1);
scanf("%s", students[i].name);
float sum = 0; // 成绩总和
for (j = 0; j < 3; j++) {
printf("请输入第%d个学生的第%d门课成绩: ", i + 1, j + 1);
scanf("%f", &students[i].score[j]);
sum += students[i].score[j];
}
students[i].average = sum / 3; // 计算平均成绩
}
// 将数据写入文件
fwrite(students, sizeof(Student), 5, fp);
// 关闭文件
fclose(fp);
printf("数据已写入文件stud.dat。\n");
return 0;
}
```
这段代码首先定义了一个学生结构体,包含学号、姓名、三门课程成绩和平均成绩。然后在`main`函数中,程序使用`fopen`函数打开(或创建)"stud.dat"文件,并设置为二进制写入模式("wb")。之后,程序提示用户输入每个学生的数据,并在输入完毕后计算平均成绩。最后,所有学生数据被写入到文件中,并使用`fclose`函数关闭文件。
注意,在实际使用中,应该添加更多的错误检查和数据验证来确保程序的健壮性。
阅读全文