ldxx09


私信TA

用户名:ldxxwjx

访问量:4101

签 名:

时光匆匆,小学6年真是眨眼即逝

等  级
排  名 1845
经  验 2606
参赛次数 4
文章发表 12
年  龄 0
在职情况 学生
学  校 沥东小学
专  业

  自我简介:

解题思路:

使用结构体设置比总分,比语文,再比学号,定义,用一个数组输入,

在排序加入结构体,最后输出;


参考代码:

#include

using namespace std;

int n;

struct stu{

    int xh,yw,sx,yy,zf;//学号,语文,数学,英语,总分;

};

bool cmp(stu a,stu b)

{   

    if(a.zf!=b.zf) return a.zf>b.zf;//总分大的优先;

   if(a.yw!=b.yw) return a.yw>b.yw;//相同的话语文大的优先;

     return a.xh<b.xh;//两个都相同,学号小的优先;

}

    

int main(){

    cin>>n;

    stu a[n+2];

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

    {   a[i].xh=i;

        cin>>a[i].yw>>a[i].sx>>a[i].yy;//输入数据语文,数学,英语;

        a[i].zf=a[i].sx+a[i].yw+a[i].yy;//总分等于数学+语文+英语;

    }sort(a+1,a+1+n,cmp);

    if(n>5)

    for(int i=1;i<=5;i++)//因为只奖励前5给人,n不止的话进行特判

      cout<<a[i].xh<<" "<<a[i].zf<<endl;

      else

      for(int i=1;i<=n;i++)//n有可能是3 4 这些,不能直接循环5;

      cout<<a[i].xh<<" "<<a[i].zf<<endl;//输出学号和总分

    return 0;

}


 

0.0分

131 人评分

  评论区

  • «
  • »