1097. C语言成绩排名

时间限制:1Sec内存限制:128MB通过:90提交:375

题目描述

已知n个学生的学号(8位数)、姓名和C语言成绩,请按照规定输出他们的排名。排序规则: 如果成绩不相同,按照成绩的降序排列,如果成绩相同,按照学号的升序排列。数据保证每个学生的学号各不相同。

输入

输入数据有多组,每组数据占n+1行,第一行为学生总人数n(0 < n < = 100000),其余n行包含每个学生的学号、姓名和成绩信息。

输出

对于每组数据,输出排序后的学生信息。

样例输入

4
12671590 xiaoming 95
12671110 xiaowang 90
12671234 xiaohu 95
12670123 xiaozhang 75

样例输出

12671234 xiaohu 95
12671590 xiaoming 95
12671110 xiaowang 90
12670123 xiaozhang 75

#include <bits/stdc++.h>
using namespace std;
struct st
{
    int xuehao;
    char name[105];
    int chen;
};
void input(struct st a[],int x)
{
    for(int i=0;i<x;i++)
    {
        scanf("%d %s %d",&a[i].xuehao,&a[i].name,&a[i].chen);
    }

}


void output(struct st a[],int x)
{
    //sort(a,a+x,cmp);
 for(int i=0;i<x;i++)
     {
         printf("%d %s %d\n",&a[i].xuehao,&a[i].name,&a[i].chen);
     }
}
int main()
{
    int x;
    cin>>x;
    struct st a[105];
    input(a,x);
    output(a,x);
}


#include <bits/stdc++.h>
using namespace std;
struct st
{
    int xuehao;
    char name[105];
    int chen;
};
void input(struct st a[],int x)
{
    for(int i=0;i<x;i++)
    {
        scanf("%d %s %d",&a[i].xuehao,a[i].name,&a[i].chen);
    }

}
int cmp(st a,st b)
{
    if(a.chen==b.chen)
        return a.xuehao<b.xuehao;
    return a.chen>b.chen;
}

void output(struct st a[],int x)
{
 sort(a,a+x,cmp);
 for(int i=0;i<x;i++)
     {
         if(i<x-1)
         {
             printf("%d %s %d\n",a[i].xuehao,a[i].name,a[i].chen);
         }
         if(i==x-1)
         {
             printf("%d %s %d",a[i].xuehao,a[i].name,a[i].chen);
         }
     }
}
int main()
{
    int x;
    cin>>x;
    struct st a[105];
    input(a,x);
    output(a,x);
}

Guess you like

Origin blog.csdn.net/weixin_52908342/article/details/119899437