时间限制: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);
}