解题报告:给一个班的学生的分数排序,然后判断Jack在他们班级的排名是多少,并且有如下规定,若多个人的分数相同,则他们的排名也 是相同的。说白了就是问这个班上分数比Jack高的人数有多少个,如果有n个,则输出n+1。
由于分数的范围只有0到100,我们可以定义一个数组Mark[105],然后Mark[i]存的是分数为i的人数,这样就可以了,输入结束之后,从100到0扫一遍,就是了。

1 #include<cstdio> 2 #include<cstring> 3 int M[105]; 4 int main() { 5 int num1,num,mark,x; 6 while(scanf("%d",&num)!=EOF) { 7 memset(M,0,sizeof(M)); 8 while(scanf("%d%d",&num1,&x),num1+x) { 9 if(num == num1) 10 mark = x; 11 M[x] ++; //这两步的顺序不能随意 12 } 13 int tot = 0; 14 for(int i = 100;i>=0;--i) { 15 if(i == mark) 16 break; 17 tot += M[i]; 18 } 19 printf("%d ",tot+1); 20 } 21 return 0; 22 }