用C语言书写正确程序。用结构体编程。某班有5名学生,每名学生的数据包括学号、姓名、3 门课程的成绩。从键盘输入5名学生数据,输出5名同学平均成绩, 以及平均分最高的学生的数据(包括学号、姓名、 3 门课成绩、平均成绩)。
时间: 2024-06-08 11:10:00 浏览: 60
以下是一个用 C 语言编写的结构体程序,可以实现上述要求:
```c
#include <stdio.h>
#define NUM_STUDENTS 5 // 学生人数
// 定义学生结构体
struct Student {
int id;
char name[50];
float grades[3];
float average;
};
int main() {
// 定义学生数组
struct Student students[NUM_STUDENTS];
// 输入学生数据
for (int i = 0; i < NUM_STUDENTS; i++) {
printf("请输入第 %d 名学生的学号、姓名、3 门课程的成绩,以空格分隔:\n", i + 1);
scanf("%d %s %f %f %f", &students[i].id, students[i].name, &students[i].grades[0], &students[i].grades[1], &students[i].grades[2]);
// 计算平均成绩
students[i].average = (students[i].grades[0] + students[i].grades[1] + students[i].grades[2]) / 3;
}
// 计算平均成绩
float totalAverage = 0;
for (int i = 0; i < NUM_STUDENTS; i++) {
totalAverage += students[i].average;
}
float classAverage = totalAverage / NUM_STUDENTS;
// 查找平均分最高的学生
struct Student highestScorer = students[0];
for (int i = 1; i < NUM_STUDENTS; i++) {
if (students[i].average > highestScorer.average) {
highestScorer = students[i];
}
}
// 输出结果
printf("\n5 名同学的平均成绩为:%.2f\n", classAverage);
printf("平均分最高的学生是:%s,学号为 %d,平均成绩为 %.2f,分别为:%.2f, %.2f, %.2f\n",
highestScorer.name, highestScorer.id, highestScorer.average, highestScorer.grades[0], highestScorer.grades[1], highestScorer.grades[2]);
return 0;
}
```
运行程序后,可以按照提示输入每名学生的信息,程序将自动计算平均成绩,并输出所有学生的平均成绩以及平均分最高的学生的信息。
阅读全文