问大佬:为什么错了?

题目描述

       小红是数学科代表,上星期小红所在的班进行了数学测验,数学老师由于要忙于备课和改作业,叫小红帮忙将数学测验成绩排一下序,按从高到低进行排名,成绩相同的名次也相同,然后以此类推。现在请你编一个程序,帮小红完成数据排名的工作。

输入

       共有N+1行,第一行是一个正整数N(1<=N<=200),表示有N个学生的成绩,接下来有N行,每行第一个数表示学生的学号x(x<200),第二个数是该学生的数学测验成绩y(y>0)。

输出

       按成绩从高到低输出(成绩相同的学号小的排在前面),共有N行,每行三个数,分别为学生的学号、成绩、名次(两个数字之间用一个空格隔开)。

样例输入

4
1 125
3 90
4 138
2 125

样例输出

4 138 1
1 125 2
2 125 2
3 90 4

【三鑫的测评网站】:答案错误【0】

代码:

#include<iostream>
#include<cstdio>
using namespace std;
int a,b[1001],c[1001];
int main()
{
    cin>>a;
    for(int i=1;i<=a;i++)
        cin>>b[i]>>c[i];
    for(int i=1;i<=a;i++)
    {
        for(int j=i;j<=a;j++)
        {
            if(c[i]<c[j])
            {
                swap(b[i],b[j]);
                swap(c[i],c[j]);
            }
        }
    }
    for(int i=1;i<=a;i++)
    {
        if(c[i]==c[i-1])
        {
            cout<<b[i]<<" "<<c[i]<<" "<<i-1;
            printf("\n");
        }
        else
        {
            cout<<b[i]<<" "<<c[i]<<" "<<i;
            printf("\n");
        }
    }
    return 0;
}

 

代码修改如下,如有帮助,请采纳一下,谢谢。

#include<iostream>
#include<cstdio>
using namespace std;
int a,b[1001],c[1001];
int main()
{
	cin>>a;
	for(int i=1;i<=a;i++)
		cin>>b[i]>>c[i];
	for(int i=1;i<a;i++)
	{
		for(int j=1;j<=a-i;j++)
		{
			if(c[j]<c[j+1])
			{
				swap(b[j],b[j+1]);
				swap(c[j],c[j+1]);
			}
		}
	}
	int pm = 1;
	for(int i=1;i<=a;i++)
	{
		if (i == 1)
		{
			cout<<b[i]<<" "<<c[i]<<" "<< pm << endl;
		}else
		{
			if(c[i]==c[i-1])
				cout<<b[i]<<" "<<c[i]<<" "<< pm << endl;
			else
			{
				pm++;
				cout<<b[i]<<" "<<c[i]<<" "<< pm << endl;
			}
		}
		
	}
	return 0;
}