#记做题时遇到的一个不会做的题
04-03-07 运动会跳绳比赛
任务描述
于龙在运动会上和4位同学进行跳绳比赛,需要一个排名程序,先输入每位同学的成绩(跳绳计数),再输出每位同学的成绩及排名(成绩从高到低排列)。
输入格式:
五个空格分隔的整数,代表5个人的成绩。
输出格式:
按行输出名次与成绩,之间用一个横线分隔,横线前后各一个空格,横线就是减号。
输入样例:
150 120 180 135 100
输出样例:
1 - 180
2 - 150
3 - 135
4 - 120
5 - 100
输入样例:
180 120 120 180 120
输出样例:
1 - 180
1 - 180
3 - 120
3 - 120
3 - 120
#分析
对于一般的排序问题,通过冒泡算法,选择排序就可以解决,这题主要问题在于遇到成绩相同的两人,他们的名次的显示需要相同,而且后一位的名次显示需要根据人数来判断,主要就是困在这里。后来让同学教我才做出来。
#include<stdio.h>
int main()
{
int num[5];
for(int i=0;i<5;i++)
scanf("%d",&num[i]);
for(int i=0;i<5;i++)
for(int j=1;j<5;j++)
if(num[j]>num[j-1])
{int temp=num[j];
num[j]=num[j-1];
num[j-1]=temp;
}
int idx=1,cnt=2;
printf("%d - %d\n",idx,num[0]);
for(int i=1;i<5;i++)
{
if(num[i]==num[i-1])
{
printf("%d - %d\n",idx,num[i]);
cnt++;
}
else
{
printf("%d - %d\n",cnt,num[i]);
idx=cnt;
cnt++;
}
}
return 0;
}