[2007年NOIP普及组] 奖学金

2022/8/12 23:28:13

本文主要是介绍[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;

}



这篇关于[2007年NOIP普及组] 奖学金的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程