C语言实现有N个学生,每个学生有3门课的成绩,从键盘输入学生的信息(包括学号,姓名,三门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件“stud.dat”(二进制文件)中;再读盘并以表格形式在显示器上输出。
时间: 2024-01-02 20:02:48 浏览: 68
好的,这是一个C语言的问题。首先,我们需要定义一个结构体来表示学生信息:
```c
struct Student {
int id;
char name[20];
float scores[3];
float average;
};
```
然后,在主函数中,我们需要先从键盘输入学生信息,计算平均分数,然后将学生信息和平均分数存入二进制文件中:
```c
#include <stdio.h>
int main() {
int n;
printf("请输入学生数量:");
scanf("%d", &n);
struct Student students[n];
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的信息:\n", i + 1);
printf("学号:");
scanf("%d", &students[i].id);
printf("姓名:");
scanf("%s", students[i].name);
printf("三门课成绩:");
scanf("%f%f%f", &students[i].scores[0], &students[i].scores[1], &students[i].scores[2]);
students[i].average = (students[i].scores[0] + students[i].scores[1] + students[i].scores[2]) / 3;
}
FILE *fp = fopen("stud.dat", "wb");
fwrite(students, sizeof(struct Student), n, fp);
fclose(fp);
return 0;
}
```
最后,我们需要从文件中读取学生信息,并以表格形式输出:
```c
#include <stdio.h>
int main() {
int n;
printf("请输入学生数量:");
scanf("%d", &n);
struct Student students[n];
FILE *fp = fopen("stud.dat", "rb");
fread(students, sizeof(struct Student), n, fp);
fclose(fp);
printf("学号\t姓名\t科目1\t科目2\t科目3\t平均分\n");
for (int i = 0; i < n; i++) {
printf("%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n", students[i].id, students[i].name,
students[i].scores[0], students[i].scores[1], students[i].scores[2], students[i].average);
}
return 0;
}
```
这样就完成了题目的要求。
阅读全文