有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生的数据,要求打印出3门课的总、平均成绩,并计算出每人的平均成绩:将原有数据和计算出的平均分数存放在磁盘文件stu.tst中。c语言
时间: 2023-12-15 17:09:31 浏览: 71
好的,下面是实现该功能的 C 语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_STUDENTS 10
#define MAX_NAME_LENGTH 20
typedef struct {
int id;
char name[MAX_NAME_LENGTH];
int scores[3];
float avg_score;
} Student;
int main() {
Student students[MAX_STUDENTS];
int i, j;
float total_scores[3] = {0};
// 输入学生信息
for (i = 0; i < MAX_STUDENTS; i++) {
printf("请输入第%d个学生的信息:\n", i + 1);
printf("学号:");
scanf("%d", &students[i].id);
printf("姓名:");
scanf("%s", students[i].name);
printf("3门课程的成绩:");
for (j = 0; j < 3; j++) {
scanf("%d", &students[i].scores[j]);
total_scores[j] += students[i].scores[j]; // 累加总成绩
}
// 计算该学生的平均成绩
students[i].avg_score = (float)(students[i].scores[0] + students[i].scores[1] + students[i].scores[2]) / 3;
}
// 计算每门课的平均成绩
float avg_scores[3];
for (i = 0; i < 3; i++) {
avg_scores[i] = total_scores[i] / MAX_STUDENTS;
}
// 输出每门课的总、平均成绩
printf("每门课的总成绩为:\n");
for (i = 0; i < 3; i++) {
printf("第%d门课的总成绩为:%f\n", i + 1, total_scores[i]);
}
printf("每门课的平均成绩为:\n");
for (i = 0; i < 3; i++) {
printf("第%d门课的平均成绩为:%f\n", i + 1, avg_scores[i]);
}
// 将学生信息和计算出的平均分数存放在磁盘文件stu.tst中
FILE *fp;
if ((fp = fopen("stu.tst", "w")) == NULL) {
printf("文件打开失败!\n");
exit(1);
}
fprintf(fp, "学号\t姓名\t成绩1\t成绩2\t成绩3\t平均成绩\n");
for (i = 0; i < MAX_STUDENTS; i++) {
fprintf(fp, "%d\t%s\t%d\t%d\t%d\t%f\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;
}
```
这段代码使用了结构体存储每个学生的信息,输入学生信息时计算了该学生的平均成绩并存储在结构体中,最后将学生信息和计算出的平均分数存放在磁盘文件中。