c++学生成绩排序,先按照成绩从高到低排,若成绩相同则按照学号从低到高排序
时间: 2023-05-19 19:04:54 浏览: 106
可以使用结构体来存储学生的信息,然后使用快速排序算法对学生成绩进行排序,如果成绩相同,则再按照学号进行排序。以下是示例代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 20
#define MAX_STUDENT_NUM 100
typedef struct {
char name[MAX_NAME_LEN];
int id;
int score;
} Student;
int cmp(const void *a, const void *b) {
Student *s1 = (Student *)a;
Student *s2 = (Student *)b;
if (s1->score != s2->score) {
return s2->score - s1->score;
} else {
return s1->id - s2->id;
}
}
int main() {
int n;
scanf("%d", &n);
Student students[MAX_STUDENT_NUM];
for (int i = 0; i < n; i++) {
scanf("%s %d %d", students[i].name, &students[i].id, &students[i].score);
}
qsort(students, n, sizeof(Student), cmp);
for (int i = 0; i < n; i++) {
printf("%s %d %d\n", students[i].name, students[i].id, students[i].score);
}
return 0;
}
```
这段代码可以读入学生的姓名、学号和成绩,然后使用快速排序算法对学生成绩进行排序,如果成绩相同,则再按照学号进行排序。最后输出排序后的学生信息
阅读全文