已知5个学生4门课的成绩,要求求出每个学生的平均成绩,然后对平均成绩从高到低将各学生的成绩记录排序(成绩最高的学生排在数组最前面的行,成绩最低的学生排在数组最后面的行)
#include <stdio.h>
#include <stdlib.h>
struct student {
char name[50];
float grades[4];
float average;
};
void sort(struct student *students, int n) {
int i, j;
struct student temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (students[j].average < students[j + 1].average) {
temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
}
int main() {
int i, j;
struct student students[5];
for (i = 0; i < 5; i++) {
printf("请输入第%d个学生的姓名:", i + 1);
scanf("%s", students[i].name);
for (j = 0; j < 4; j++) {
printf("请输入第%d个学生的第%d门课程成绩:", i + 1, j + 1);
scanf("%f", &students[i].grades[j]);
students[i].average += students[i].grades[j];
}
students[i].average /= 4;
}
sort(students, 5);
printf("排序后的学生信息:\n");
for (i = 0; i < 5; i++) {
printf("%d. %s 平均成绩:%.2f\n", i + 1, students[i].name, students[i].average);
}
return EXIT_SUCCESS;
}