其他分享
首页 > 其他分享> > [2007年NOIP普及组] 奖学金

[2007年NOIP普及组] 奖学金

作者:互联网

3.[2007年NOIP普及组] 奖学金

l  分析:根据题意,定义结构体,学号与成绩联系起来,在sort函数的基础上根据题意写一个排序函数(主要是if的应用),最后输出前五名。

l   

#include<cstdio>

#include<iostream>

#include<algorithm>

using namespace std;

struct node//定义结构体

{

       int num;

       int ch,ma,en,s;

};

node a[501];

bool cmp(node x,node y)//根据题意,手打排序

{

       if(x.s>y.s) return 1;

       else if(x.s==y.s)//成绩相等时

       {

              if(x.ch>y.ch) return 1;//根据语文成绩

              else if(x.ch<y.ch) return 0;

              else //语文成绩相等时

              {

                     if(x.num<y.num) return 1;//根据学号

                     else return 0;

              }

       }

       else return 0;

}

int main()

{

       int n;

       cin>>n;

       for(int i=1;i<=n;i++)

       {

              cin>>a[i].ch>>a[i].ma>>a[i].en;

              a[i].num=i;//位置赋给学号

              a[i].s=a[i].ch+a[i].ma+a[i].en;//总分

       }

       sort(a+1,a+n+1,cmp);//排序

       for(int i=1;i<=5;i++)//前五名

       {

              cout<<a[i].num<<" "<<a[i].s<<endl; 

       }

       return 0;

}

标签:node,ch,return,题意,NOIP,int,else,2007,奖学金
来源: https://www.cnblogs.com/xdzxjinghan/p/16581400.html