有10个学生,每个学生的数据包括学号,姓名,3门课的成绩。从键盘输入10个学生数据,要求打印出3门课总平均成绩,并计算出每人的平均成绩,将原有数据和计算出的平时分数存放在磁盘文件stu.txt中使用C语言
时间: 2023-12-15 15:15:36 浏览: 57
要求打印出3门课的平均成绩,以及平均成绩最高的学生的数据(包括学号、姓名、3
好的,这是一个简单的学生成绩管理程序,你可以参考一下:
```c
#include <stdio.h>
#define MAX_STUDENT 10
#define MAX_NAME 20
typedef struct {
int id;
char name[MAX_NAME];
float scores[3];
float avg_score;
} Student;
int main() {
Student students[MAX_STUDENT];
float total_scores[3] = {0, 0, 0};
// 输入学生数据
for (int i = 0; i < MAX_STUDENT; i++) {
printf("请输入第%d个学生的学号、姓名和3门课的成绩,用空格分隔:", i + 1);
scanf("%d %s %f %f %f", &students[i].id, students[i].name, &students[i].scores[0], &students[i].scores[1], &students[i].scores[2]);
// 计算平均成绩
float sum_score = 0;
for (int j = 0; j < 3; j++) {
sum_score += students[i].scores[j];
total_scores[j] += students[i].scores[j];
}
students[i].avg_score = sum_score / 3;
}
// 打印3门课平均成绩
printf("3门课的平均成绩分别为:%.2f %.2f %.2f\n", total_scores[0] / MAX_STUDENT, total_scores[1] / MAX_STUDENT, total_scores[2] / MAX_STUDENT);
// 打印每个学生的平均成绩,并将数据存入文件
FILE *fp = fopen("stu.txt", "w");
if (fp == NULL) {
printf("无法打开文件\n");
return 1;
}
for (int i = 0; i < MAX_STUDENT; i++) {
printf("学生%d %s的平均成绩为:%.2f\n", students[i].id, students[i].name, students[i].avg_score);
fprintf(fp, "%d %s %.2f %.2f %.2f %.2f\n", students[i].id, students[i].name, students[i].scores[0], students[i].scores[1], students[i].scores[2], students[i].avg_score);
}
fclose(fp);
return 0;
}
```
程序通过一个结构体 `Student` 来存储每个学生的数据,包括学号、姓名、3门课的成绩和平均成绩。程序首先从键盘输入10个学生数据,并计算出每个学生的平均成绩和每门课的总平均成绩。然后程序将每个学生的数据和计算出的平均成绩存储到磁盘文件 `stu.txt` 中,并打印每个学生的平均成绩。
阅读全文