c语言编程题,要求用结构体解答:5个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入5个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号,姓名、3门课程成绩、平均分数)
时间: 2023-12-15 19:23:14 浏览: 96
C语言程序设计-输入2个学生3门课的成绩,计算学生成绩平均分,课程平均分和最高分.
5星 · 资源好评率100%
好的,下面是一份结构体解答的代码:
```c
#include <stdio.h>
// 定义学生结构体
struct Student {
int id;
char name[20];
float score1;
float score2;
float score3;
float avg_score;
};
int main() {
// 定义5个学生结构体变量
struct Student students[5];
// 从键盘输入每个学生的数据
for (int i = 0; i < 5; i++) {
printf("请输入第%d个学生的学号、姓名、三门课程成绩:\n", i+1);
scanf("%d %s %f %f %f", &students[i].id, students[i].name, &students[i].score1, &students[i].score2, &students[i].score3);
// 计算平均分数
students[i].avg_score = (students[i].score1 + students[i].score2 + students[i].score3) / 3.0;
}
// 计算3门课程总平均成绩
float total_score = 0.0;
for (int i = 0; i < 5; i++) {
total_score += students[i].score1 + students[i].score2 + students[i].score3;
}
float avg_total_score = total_score / 15.0;
printf("3门课程总平均成绩为:%.2f\n", avg_total_score);
// 找到最高分的学生
int max_index = 0;
float max_score = students[0].avg_score;
for (int i = 1; i < 5; i++) {
if (students[i].avg_score > max_score) {
max_index = i;
max_score = students[i].avg_score;
}
}
// 输出最高分的学生的数据
printf("最高分的学生是:\n");
printf("学号:%d\n", students[max_index].id);
printf("姓名:%s\n", students[max_index].name);
printf("三门课程成绩:%.2f %.2f %.2f\n", students[max_index].score1, students[max_index].score2, students[max_index].score3);
printf("平均分数:%.2f\n", students[max_index].avg_score);
return 0;
}
```
这份代码定义了一个`Student`结构体,包含学号、姓名、三门课程成绩和平均分数。在`main`函数中,定义了5个`Student`结构体变量,通过循环从键盘输入每个学生的数据,并计算平均分数。然后,计算3门课程总平均成绩,找到最高分的学生并输出其数据。
阅读全文