并列排名
零基础之题,so easy
题目描述
在我们参加的各种竞赛中,允许并列的排名方式是经常遇到的。 例如有四名选手的成绩分别为50、80、50、30分,则80分的选手为第一名,50分的两名选手均为第二名,30分的选手为第四名。 请编写一个程序,计算一个选手在这种排名方式之下的名次(分数高的选手排前面)。
输入
第一行为一个整数N(1<=N<=100),表示参赛的选手数,第二行为N个整数,
表示每位选手的成绩,第三行为一个整数m,表示要查询名次的选手的成绩。
输出
输出一个整数,表示该选手的名次。
样例输入
4
50 80 50 30
50
样例输出
2
源代码(注意一艘多组):
#include<stdio.h>
int main() {
int n,i,j,k,a[101],b[101],m,t;
while(scanf("%d",&n)!=EOF) {
for(i=0; i<n; i++) scanf("%d",&a[i]);
scanf("%d",&m);
for(i=0; i<n-1; i++)
for(j=0; j<n-1-i; j++)
if(a[j]>a[j+1]) {
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(i=0; i<n; i++) b[i]=a[n-i-1];
for(i=0; i<n; i++)
if(m==b[i]) {
printf("%d\n",i+1);
break;
}
}
return 0;
}