c++(结构体)买奖品(sort)

该程序用于处理班级学生的语文、数学、英语、信息技术成绩,并按数学和信息技术成绩进行排名。首先使用结构体存储学生成绩,然后通过排序算法先按数学成绩排序,再按信息技术成绩排序,最后输出包含所有成绩和排名的结果。
摘要由CSDN通过智能技术生成

买奖品(sort)

题目描述:

   班上刚测试了几门课,现在信息技术的老师要分析一些功课之间的成绩关系,看看每个人的信息技术课排名以及他的数学排名,并按信息技术课的成绩从高分到低分排列(数据中保证任意一学科中没有两个人的这门课成绩是一样的)。老师把任务交给了信息学最好的你,请你编程完成这个任务。

输入文件

  第一行一个整数N,表示共有N个同学的成绩。

  后面有N行,每行4个整数,分别表示一个同学的:语文、数学、英语、信息技术成绩。

输出文件

  共N行,每行6个数据,分别对应一个同学的:语文、数学、英语、信息技术成绩 和信息技术及数学的排名。

数据范围

  1<=N<=45;

  每个成绩C的范围为:0<=C<=120; 

样例

输入

3

90   95   89  110

95  120   78  115

96   97  103   92

输出

95  120   78  115   1  1
90   95   89  110   2  3

96   87  103   92   3  2


任务

1.用结构体储存班上同学的语文、数学、英语、信息技术成绩和同学序号;

2.用int储存班上同学的人数n;

3.写出结构体排序的cmp(题中,先按数学排名搞好同学序号,再按信息排名)

4.输出最后的排序结果(语文、数学、英语、信息技术成绩 和信息技术及数学的排名


#include<bits/stdc++.h>
using namespace std;
struct data
{
	long long yw;
	long long sx;
    long long yy;
    long long xh;
    long long xx;
};
data sorts[309];
bool px(data x,data y)
{
	return x.sx>y.sx;
}
bool ps(data x,data y)
{
	return x.xx>y.xx;
}
long long n;
int main()
{
    cin>>n;
    for(long long i=1; i<=n; i++)
    {
        scanf("%lld%lld%lld%lld",&sorts[i].yw,&sorts[i].sx,&sorts[i].yy,&sorts[i].xx);
    }
    sort(sorts+1,sorts+1+n,px);
    for(long long i=1; i<=n; i++)
    sorts[i].xh=i;
    sort(sorts+1,sorts+1+n,ps);
    for(long long i=1; i<=n; i++)
    {
    	printf("%lld %lld %lld %lld %lld %lld\n",sorts[i].yw,sorts[i].sx,sorts[i].yy,sorts[i].xx,i,sorts[i].xh);
    }
    return 0;
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值