c语言结构体实现输入5个学生的姓名和每位学生的三门课的成绩,求每位学生的成绩平均值,并输出平均值最高的学生的平均分和每门课成绩
时间: 2024-02-20 12:00:46 浏览: 87
好的,以下是代码实现:
```c
#include <stdio.h>
#include <string.h>
#define NUM_STUDENTS 5
#define MAX_NAME_LENGTH 50
struct Student {
char name[MAX_NAME_LENGTH];
float score1;
float score2;
float score3;
float avg_score;
};
int main() {
struct Student students[NUM_STUDENTS];
// 输入每位学生的姓名和成绩
for (int i = 0; i < NUM_STUDENTS; i++) {
printf("请输入第%d位学生的姓名:", i + 1);
scanf("%s", students[i].name);
printf("请输入第%d位学生的第一门科目成绩:", i + 1);
scanf("%f", &students[i].score1);
printf("请输入第%d位学生的第二门科目成绩:", i + 1);
scanf("%f", &students[i].score2);
printf("请输入第%d位学生的第三门科目成绩:", i + 1);
scanf("%f", &students[i].score3);
// 计算每位学生的平均分
students[i].avg_score = (students[i].score1 + students[i].score2 + students[i].score3) / 3.0;
}
// 找到平均分最高的学生
int max_index = 0;
for (int i = 1; i < NUM_STUDENTS; i++) {
if (students[i].avg_score > students[max_index].avg_score) {
max_index = i;
}
}
// 输出平均分最高的学生的平均分和每门课成绩
printf("平均分最高的学生是:%s\n", students[max_index].name);
printf("平均分为:%.2f\n", students[max_index].avg_score);
printf("每门课成绩为:%.2f %.2f %.2f\n", students[max_index].score1, students[max_index].score2, students[max_index].score3);
return 0;
}
```
同样需要注意,这里我们假定每位学生都有三门科目的成绩。如果需要更多或更少的科目,可以相应地修改代码。同时,我们也假定学生姓名不超过50个字符,如果需要更长的姓名,也需要相应地修改 `MAX_NAME_LENGTH` 的值。
阅读全文