输入程序比赛参赛者的ID和解出的题数,依照题数递减的方式进行排序。输入要求:第一行输入一个整数n,表示参赛者的人数。接下来n行是每个参赛者的ID和解出题数。题数最多为100,人数不超过500。输出要求:依照解出的题数降序排序,题数相同的依照出现顺序排序。C语言
时间: 2024-03-16 10:44:41 浏览: 8
好的,以下是使用 C 语言实现的代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
char id[11];
int score;
int order;
} Participant;
int cmp(const void* a, const void* b) {
Participant* pa = (Participant*)a;
Participant* pb = (Participant*)b;
if (pa->score != pb->score) {
return pb->score - pa->score;
} else {
return pa->order - pb->order;
}
}
int main() {
int n;
scanf("%d", &n);
Participant* participants = (Participant*)malloc(n * sizeof(Participant));
for (int i = 0; i < n; i++) {
scanf("%s%d", participants[i].id, &participants[i].score);
participants[i].order = i;
}
qsort(participants, n, sizeof(Participant), cmp);
printf("排序结果:\n");
for (int i = 0; i < n; i++) {
printf("%s %d\n", participants[i].id, participants[i].score);
}
free(participants);
return 0;
}
```
这段代码会先读取参赛者的数量,然后读取每个参赛者的ID和解题数,存储在一个结构体数组中,并记录每个参赛者的输入顺序。接着使用 `qsort` 函数按照解题数递减的方式进行排序,若解题数相同则按照输入顺序排序,并输出排序结果。
希望这个代码能够解决您的问题。