Problem1076--结构体初学2

1076: 结构体初学2

[Creator : ]
Time Limit : 1.000 sec  Memory Limit : 128 MB

Description

现在给出n个同学的姓名,语文成绩,数学成绩。要求你按两科总分从高到低的顺序输出同学的姓名和总分。如果总分相同,按姓名的字典序排。1<n<100(用结构体做)

Sample Input Copy

4
gaoxiang 78 96
liujia 90 87
zhangjin 78 90
wangxi 70 98

Sample Output Copy

liujia 177
gaoxiang 174
wangxi 168
zhangjin 168

HINT




#include<bits/stdc++.h>
using namespace std;
struct cj
{
string xm;//定义姓名 
int yw;//语文 
int sx;//数学 
int zf;//总分 
};
bool cmp(cj x,cj y)//排序条件 
{
    if(x.zf!=y.zf) return x.zf>y.zf;//按总分成绩从高到低排 
    else
    return x.xm<y.xm;//按姓名从低到高排 
}
int main()
{
  int n;
  cin>>n;
  cj a[n+2];//定义数组为数据结构类型 
  for(int i=1;i<=n;i++)
  {
  cin>>a[i].xm>>a[i].yw>>a[i].sx;//输入成绩 
  a[i].zf=a[i].sx+a[i].yw;//计算总分成绩 
  }
  sort(a+1,a+n+1,cmp);//排序 
  for(int i=1;i<=n;i++)
  cout<<a[i].xm<<" "<<a[i].zf<<endl;//输出 
return 0;
}

Source/Category