用C语言输入程序比赛参赛者的ID和解出的题数,依照题数递减的方式进行排序
时间: 2024-03-06 19:48:23 浏览: 54
好的,以下是一个示例程序,可以实现你的需求:
```c
#include <stdio.h>
// 定义参赛者结构体
typedef struct {
int id; // 参赛者ID
int solved; // 解出的题数
} Contestant;
// 定义比赛结果排序函数
void sort_contestants(Contestant contestants[], int n) {
int i, j;
Contestant temp;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (contestants[i].solved < contestants[j].solved) {
// 交换两个参赛者的位置
temp = contestants[i];
contestants[i] = contestants[j];
contestants[j] = temp;
}
}
}
}
int main() {
// 测试数据
Contestant contestants[] = {
{1001, 5},
{1002, 3},
{1003, 7},
{1004, 1},
};
int n = sizeof(contestants) / sizeof(Contestant);
// 排序前的结果
printf("排序前的结果:\n");
for (int i = 0; i < n; i++) {
printf("参赛者ID:%d,解出的题数:%d\n", contestants[i].id, contestants[i].solved);
}
// 排序
sort_contestants(contestants, n);
// 排序后的结果
printf("排序后的结果:\n");
for (int i = 0; i < n; i++) {
printf("参赛者ID:%d,解出的题数:%d\n", contestants[i].id, contestants[i].solved);
}
return 0;
}
```
运行结果:
```
排序前的结果:
参赛者ID:1001,解出的题数:5
参赛者ID:1002,解出的题数:3
参赛者ID:1003,解出的题数:7
参赛者ID:1004,解出的题数:1
排序后的结果:
参赛者ID:1003,解出的题数:7
参赛者ID:1001,解出的题数:5
参赛者ID:1002,解出的题数:3
参赛者ID:1004,解出的题数:1
```
以上程序中,我们定义了一个参赛者结构体 `Contestant`,包括参赛者ID和解出的题数两个属性。然后定义了一个排序函数 `sort_contestants`,使用冒泡排序进行排序,排序的关键字为参赛者的解题数量,需要按照递减的方式进行排序。
最后,我们定义了一组测试数据,调用排序函数进行排序,并输出结果。
阅读全文