用c语言按照参赛选手顺序序号来进行得分排序然后指定指定每一位选手的名称,,最后按照选手序号重新排序
时间: 2024-03-19 13:45:39 浏览: 139
排序算法,用C语言来做的
好的,我会根据你的要求回答问题。
首先,我们需要定义一个 `struct`,用来存储选手的信息,包括编号、得分和名称:
```c
struct Player {
int number;
int score;
char name[20];
};
```
接下来,我们可以定义一个数组来存储所有的选手信息:
```c
struct Player players[N];
```
其中 `N` 表示选手的总数,可以根据实际情况进行调整。
接着,我们可以让用户输入每个选手的编号、得分和名称:
```c
for(i = 0; i < N; i++) {
printf("请输入第%d个选手的编号、得分和名称:", i + 1);
scanf("%d %d %s", &players[i].number, &players[i].score, players[i].name);
}
```
接着,我们可以使用冒泡排序法来对选手的得分进行排序。具体实现如下:
```c
int i, j;
struct Player temp;
for(i = 0; i < N - 1; i++) {
for(j = 0; j < N - i - 1; j++) {
if(players[j].score < players[j + 1].score) {
temp = players[j];
players[j] = players[j + 1];
players[j + 1] = temp;
}
}
}
```
然后,我们可以让用户指定每个选手的名称:
```c
for(i = 0; i < N; i++) {
printf("请输入第%d名选手的名称:", i + 1);
scanf("%s", players[i].name);
}
```
最后,我们可以按照选手编号重新排序,并输出选手的编号、得分和名称:
```c
for(i = 0; i < N - 1; i++) {
for(j = i + 1; j < N; j++) {
if(players[i].number > players[j].number) {
temp = players[i];
players[i] = players[j];
players[j] = temp;
}
}
}
for(i = 0; i < N; i++) {
printf("第%d名:选手编号%d,得分:%d,名称:%s\n", i + 1, players[i].number, players[i].score, players[i].name);
}
```
希望这个代码片段能够帮助到你!如果你还有其他问题,可以继续提出来。
阅读全文