题目描述
定义一个学生结构体,含学号(一维字符数组)、姓名、成绩(整型)。从键盘输入n(n<20),再输入n个学生的信息,按学生成绩从小到大顺序输出学生信息。
输入
输入一个n,接着输入n个学生的信息。
输出
按成绩从小到大顺序输出学生信息。
样例输入 Copy
4 1001 Li 76 1002 Zhang 92 1003 Liu 85 1004 Wang 70
样例输出 Copy
1004 Wang 70 1001 Li 76 1003 Liu 85 1002 Zhang 92
#include <stdio.h>
#include <string.h>
struct Student {
char id[10];
char name[20];
int score;
};
int compare(const void *a, const void *b) {
return ((struct Student *)a)->score - ((struct Student *)b)->score;
}
int main() {
int n;
scanf("%d", &n);
struct Student students[n];
for (int i = 0; i < n; i++) {
scanf("%s %s %d", students[i].id, students[i].name, &students[i].score);
}
qsort(students, n, sizeof(struct Student), compare);
for (int i = 0; i < n; i++) {
printf("%s %s %d\n", students[i].id, students[i].name, students[i].score);
}
return 0;
}