用C语言书写正确程序。用结构体编程。某班有5名学生,每名学生的数据包括学号、姓名、3 门课程的成绩。从键盘循环输入5名学生数据,输出5名同学平均成绩, 以及平均分最高的学生的数据(包括学号、姓名、 3 门课成绩、平均成绩)。
时间: 2024-06-08 14:10:00 浏览: 100
下面是一个用结构体编写的C语言程序,可以实现上述功能:
```c
#include <stdio.h>
#include <string.h>
#define NUM_STUDENTS 5
#define NUM_COURSES 3
struct student {
int id;
char name[20];
float grades[NUM_COURSES];
float average;
};
int main() {
struct student students[NUM_STUDENTS];
float highest_average = 0.0;
int highest_average_index = -1;
float total_average = 0.0;
// 输入学生数据
for (int i = 0; i < NUM_STUDENTS; i++) {
printf("请输入第 %d 名学生的学号:", i+1);
scanf("%d", &students[i].id);
printf("请输入第 %d 名学生的姓名:", i+1);
scanf("%s", students[i].name);
printf("请输入第 %d 名学生的三门课成绩:", i+1);
for (int j = 0; j < NUM_COURSES; j++) {
scanf("%f", &students[i].grades[j]);
}
// 计算该学生的平均成绩
float sum = 0.0;
for (int j = 0; j < NUM_COURSES; j++) {
sum += students[i].grades[j];
}
students[i].average = sum / NUM_COURSES;
// 更新总平均分和最高平均分
total_average += students[i].average;
if (students[i].average > highest_average) {
highest_average = students[i].average;
highest_average_index = i;
}
}
// 输出所有学生的平均成绩
printf("\n所有学生的平均成绩为:%.2f\n", total_average / NUM_STUDENTS);
// 输出平均分最高的学生的数据
printf("平均分最高的学生的数据为:\n");
printf("学号:%d\n", students[highest_average_index].id);
printf("姓名:%s\n", students[highest_average_index].name);
printf("三门课成绩:%.2f, %.2f, %.2f\n",
students[highest_average_index].grades[0],
students[highest_average_index].grades[1],
students[highest_average_index].grades[2]);
printf("平均成绩:%.2f\n", students[highest_average_index].average);
return 0;
}
```
这个程序使用了一个 `struct` 结构体类型来表示每个学生的数据,包括学号、姓名、三门课程成绩和平均成绩。程序首先使用一个循环来从键盘输入每个学生的数据,并计算出每个学生的平均成绩。在输入数据的过程中,程序还会更新总平均分和平均分最高的学生的数据。最后,程序输出所有学生的平均成绩和平均分最高的学生的数据。
阅读全文