运动会跳绳比赛
任务描述
于龙在运动会上和4位同学进行跳绳比赛,需要一个排名程序,先输入每位同学的成绩(跳绳计数),再输出每位同学的成绩及排名(成绩从高到低排列)。
输入格式:
五个空格分隔的整数,代表5个人的成绩。
输出格式:
按行输出名次与成绩,之间用一个横线分隔,横线前后各一个空格,横线就是减号。
输入示例1
150 120 180 135 100
输出示例1
1 - 180
2 - 150
3 - 135
4 - 120
5 - 100
输入示例2
180 120 120 180 120
输出示例2
1 - 180
1 - 180
3 - 120
3 - 120
3 - 120
代码
#include <stdio.h>
#define NUM 5
int main() {
int scores[NUM];
for (int i = 0; i < NUM; ++i)
{
scanf("%d", &scores[i]);
}
for (int i = 0; i < NUM; ++i)// 按成绩从高到低进行排序,并更新排名
{
for (int j = i + 1; j < NUM; ++j)
{
if (scores[i] < scores[j])
{
int temp_score = scores[i];// 交换分数
scores[i] = scores[j];
scores[j] = temp_score;
int temp_rank = ranks[i];// 交换排名
ranks[i] = ranks[j];
ranks[j] = temp_rank;
}
}
}
// 更新排名,处理相同分数的情况
for (int i = 1; i < NUM; ++i)
{
if (scores[i] == scores[i - 1])
{
ranks[i] = ranks[i - 1];
}
else
{
ranks[i] = i + 1;
}
}
for (int i = 0; i < NUM; ++i)
{
printf("%d - %d\n", ranks[i], scores[i]);
}
return 0;
}