一个班上有30名学生,每个学生的数据作为一个记录,每个记录包括学号、姓名、三门课程的成绩和三门课程平均成绩。从键盘输入学生的学号、姓名及三门课的成绩。要求打印三门课程平均成绩最高分的学生记录。c语言结构体
时间: 2024-09-12 16:05:21 浏览: 186
学生信息管理系统,1、每一条记录包括一个学生的学号、姓名、3门课成绩、平均成绩。
在C语言中,我们可以使用结构体(struct)来表示学生的数据,包含学号、姓名以及三门课程的成绩。首先,我们需要定义一个结构体`Student`:
```c
#include <stdio.h>
// 定义学生结构体
typedef struct {
int student_id; // 学号
char name[50]; // 姓名
float score[3]; // 三门课程的成绩
float avg_score[3]; // 每门课程的平均成绩
} Student;
int main() {
// 初始化数组存储学生信息
Student students[30];
// 输入学生信息
for (int i = 0; i < 30; i++) {
printf("请输入第 %d 名学生的学号、姓名及三门课的成绩:\n", i + 1);
scanf("%d", &students[i].student_id);
scanf("%s", students[i].name);
for (int j = 0; j < 3; j++) {
scanf("%f", &students[i].score[j]);
students[i].avg_score[j] = students[i].score[j] / 3.0; // 计算平均成绩
}
}
// 找到平均成绩最高的学生
float max_avg = students[0].avg_score[0];
int max_student_index = 0;
for (int i = 1; i < 30; i++) {
if (students[i].avg_score[0] > max_avg) {
max_avg = students[i].avg_score[0];
max_student_index = i;
} else if (学生们[i].avg_score[1] > max_avg ||
(students[i].avg_score[1] == max_avg && students[i].avg_score[2] > students[max_student_index].avg_score[2])) {
// 更新最高平均成绩和索引,如果第二门或第三门平均成绩更高
max_avg = students[i].avg_score[1];
max_student_index = i;
}
}
// 打印最高分的学生记录
printf("平均成绩最高的学生是 (%d): %s\n", students[max_student_index].student_id, students[max_student_index].name);
return 0;
}
阅读全文