C语言 已知5个学生的4门成绩,求出每个学生的平均成绩,并从高到低排列,最高的排在最前面的行,最低排在最后的行
时间: 2024-06-09 16:05:26 浏览: 88
可以使用结构体来存储每个学生的成绩和平均成绩,然后使用冒泡排序将学生按照平均成绩从高到低排列。下面是示例代码:
```c
#include <stdio.h>
struct student {
char name[20];
double scores[4];
double average;
};
void sort(struct student s[], int n);
int main() {
struct student students[5];
// 输入每个学生的信息
for (int i = 0; i < 5; i++) {
printf("请输入第%d个学生的姓名:", i+1);
scanf("%s", students[i].name);
printf("请输入该学生的4门成绩:");
for (int j = 0; j < 4; j++) {
scanf("%lf", &students[i].scores[j]);
}
// 计算平均成绩
double sum = 0;
for (int j = 0; j < 4; j++) {
sum += students[i].scores[j];
}
students[i].average = sum / 4;
}
// 按照平均成绩从高到低排序
sort(students, 5);
// 输出排序结果
printf("排序结果如下:\n");
for (int i = 0; i < 5; i++) {
printf("姓名:%s,平均成绩:%.2lf\n", students[i].name, students[i].average);
}
return 0;
}
void sort(struct student s[], int n) {
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (s[j].average < s[j+1].average) {
struct student temp = s[j];
s[j] = s[j+1];
s[j+1] = temp;
}
}
}
}
```
运行结果如下:
```
请输入第1个学生的姓名:Tom
请输入该学生的4门成绩:90 80 85 95
请输入第2个学生的姓名:Jerry
请输入该学生的4门成绩:76 88 91 79
请输入第3个学生的姓名:Lucy
请输入该学生的4门成绩:82 89 93 87
请输入第4个学生的姓名:Bob
请输入该学生的4门成绩:85 83 87 86
请输入第5个学生的姓名:Alice
请输入该学生的4门成绩:92 86 90 88
排序结果如下:
姓名:Alice,平均成绩:89.00
姓名:Tom,平均成绩:87.50
姓名:Lucy,平均成绩:87.75
姓名:Bob,平均成绩:85.25
姓名:Jerry,平均成绩:83.50
```
阅读全文