用c语言编写下面题目:题目描述 又是一次期中考。考完之后肯定少不了成绩的排名。可是面对这么多的成绩,老师也觉得累。于是向熟悉编程的你求助。计入排名的考试只有语文数学跟英语三门。按照平均分从高到低输出。 输入要求 先输入一个整数n,表示有n个学生。(0 < n < 300) 接下来n行,每行有4个数据,分别代表学号,语文成绩,数学成绩,英语成绩。 输出要求 按照平均分从大到小输出这n个学生的语文成绩、数学成绩、英语成绩。平均分相同时,按照学号的升序来。
时间: 2024-02-27 14:51:59 浏览: 115
您好,根据您的需求,我为您提供以下的 C 语言代码示例,可以实现按照平均分从高到低输出学生的语文成绩、数学成绩、英语成绩。如果平均分相同,则按照学号升序排列:
```c
#include <stdio.h>
#include <stdlib.h>
struct student {
int no;
int chinese;
int math;
int english;
double average;
};
int cmp(const void *a, const void *b) {
struct student *s1 = (struct student*)a;
struct student *s2 = (struct student*)b;
if (s1->average != s2->average) {
return s2->average > s1->average ? 1 : -1; // 平均分不同,按照平均分从大到小排序
} else {
return s1->no - s2->no; // 平均分相同,按照学号从小到大排序
}
}
int main() {
int n, i;
scanf("%d", &n);
struct student stu[n];
for (i = 0; i < n; i++) {
scanf("%d %d %d %d", &stu[i].no, &stu[i].chinese, &stu[i].math, &stu[i].english);
stu[i].average = (stu[i].chinese + stu[i].math + stu[i].english) / 3.0;
}
qsort(stu, n, sizeof(struct student), cmp); // 调用qsort函数进行排序
for (i = 0; i < n; i++) {
printf("%d %d %d %d\n", stu[i].no, stu[i].chinese, stu[i].math, stu[i].english);
}
return 0;
}
```
该示例中,我们定义了一个结构体 `student`,包含学号、语文成绩、数学成绩、英语成绩和平均分五个成员。然后定义了一个 `cmp` 函数,用于传递给 `qsort` 函数进行排序。在 `main` 函数中,我们首先读入学生的信息,并计算出他们的平均分。然后调用 `qsort` 函数进行排序,最后按照要求输出排序后的结果。
阅读全文