题目描述
有n(0<n<100)个学生参加语文、数学的联合调研考试,所有的成绩都是0到100的整数。
请按照学生的总分,从高到低进行排名。
总分一样的学生按照录入成绩的先后次序排序且排名的名次是一样的。
输入
第一行一个整数n,表示n个学生。
以下2到n+1行,每行一个字符串、两个整数,分别表示n个学生的姓名、语文、数学成绩。
输出
输出n行,每行一个字符串、两个整数,表示学生的姓名、总分、排名(允许并列)。
样例
输入
4
xiaowang 60 70
xiaoli 60 90
xiaoming 80 90
xiaogao 70 80
输出
xiaoming 170 1
xiaoli 150 2
xiaogao 150 2
xiaowang 130 4
解释
本题使用结构体来做
一个“ikun”结构体:
struct ikun{
int cj,yw,sx;string name;
}
至于再写什么,我也想不出来了,算了,上AC代码!!!
AC代码
请先独立思考,抄袭对你没有好处!!!
#include <bits/stdc++.h>
using namespace std;
struct ikun{
int cj,yw,sx;string name;
}stu[100];
bool cmp(ikun a,ikun b)
{
return a.cj>b.cj;
}
int main() {
int n,s=1;
cin>>n;
for (int i=1;i<=n;i++){
cin>>stu[i].name>>stu[i].yw>>stu[i].sx;
stu[i].cj=stu[i].yw+stu[i].sx;
}
sort(stu+1,stu+n+1,cmp);
cout<<stu[1].name<<" "<<stu[1].cj<<" "<<s<<endl;
for (int i=2;i<=n;i++){
if (stu[i].cj==stu[i-1].cj){
s=i-1;
}
else s=i;
cout<<stu[i].name<<" "<<stu[i].cj<<" "<<s<<endl;
}
return 0;
}