结构体数组排序 定义一个学生结构体Student,包含语文数学英语三个成员(整形数字)。然后补全一个 函数,根据学生的成绩找到最高的一门,并编写一个打印函数,调用补全的函数输出最高分。 结构体: ty
时间: 2024-10-06 21:01:49 浏览: 62
在C语言中,我们可以创建一个名为`Student`的结构体数组,每个元素代表一个学生,包含语文、数学、英语的成绩。首先,我们需要定义这个结构体:
```c
typedef struct {
int Chinese; // 语文成绩
int Math; // 数学成绩
int English; // 英语成绩
} Student;
```
接下来,我们定义一个辅助函数`find_highest_score`用于找出数组中最高分所在的索引,以及一个函数`print_student_scores`来打印最高分及其对应的学生信息:
```c
// 找到最高分所在的索引
int find_highest_score(Student scores[], int n) {
int max_index = 0;
for (int i = 1; i < n; i++) {
if (scores[i].Chinese > scores[max_index].Chinese ||
(scores[i].Chinese == scores[max_index].Chinese &&
scores[i].Math > scores[max_index].Math) ||
(scores[i].Chinese == scores[max_index].Chinese &&
scores[i].Math == scores[max_index].Math && scores[i].English > scores[max_index].English)) {
max_index = i;
}
}
return max_index;
}
// 打印最高分及对应学生信息
void print_student_scores(Student scores[], int n, int max_index) {
printf("最高分为:\n");
printf("语文:%d\n", scores[max_index].Chinese);
printf("数学:%d\n", scores[max_index].Math);
printf("英语:%d\n", scores[max_index].English);
printf("学生:\n");
// 如果需要显示学生的其他信息,可以添加更多打印语句
}
```
最后,在主程序中调用这两个函数:
```c
int main() {
const int num_students = 5;
Student students[num_students] = { {85, 92, 88}, {90, 95, 94}, {78, 80, 76},
{96, 97, 98}, {82, 84, 86} };
int highest_index = find_highest_score(students, num_students);
print_student_scores(students, num_students, highest_index);
return 0;
}
```
这里假设最高分是基于三科成绩综合判断的,如果只看单科最高,只需去掉比较条件中的其他两科。
阅读全文