提交记录 #399
提交时间:2024-12-03 16:28:48
语言:c
状态:Unaccepted
编译情况:编译成功
固定测试点#1:
固定测试点#2:
固定测试点#3:
附加测试点暂不可用
5757.【中学】学生成绩排序
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生结构体
typedef struct {
char name[21]; // 假设姓名长度不超过20个字符
int score;
} Student;
// 用于比较两个学生的成绩,成绩高的排在前面,如果成绩相同,则保持输入顺序
int compare(const void *a, const void *b) {
Student *studentA = (Student *)a;
Student *studentB = (Student *)b;
if (studentA->score > studentB->score) return -1;
if (studentA->score < studentB->score) return 1;
return 0; // 成绩相同,保持输入顺序
}
int main() {
int n;
scanf("%d", &n); // 读取学生数量
// 动态分配学生数组
Student *students = (Student *)malloc(n * sizeof(Student));
// 读取学生数据
for (int i = 0; i < n; i++) {
scanf("%s %d", students[i].name, &students[i].score);
}
// 使用qsort进行排序
qsort(students, n, sizeof(Student), compare);
// 输出排序后的结果
for (int i = 0; i < n; i++) {
printf("%s %d\n", students[i].name, students[i].score);
}
// 释放动态分配的内存
free(students);
return 0;
}