班上刚测试了几门课,现在信息技术老师要分析一些功课之间的成绩关系,看看每个人的信息技术课排名以及他的数学排名,并按信息技术课的成绩从高分到低分排列(数据中保证任意一学科中没有两个人的这门课成绩是一样的)。老师把任务交给了信息学最好的你,请你编程完成这个任务。
输入格式
第一行一个整数N,表示共有N个同学的成绩。
后面有N行,每行4个整数,分别表示一个同学的:语文、数学、英语、信息技术成绩。
输出格式
共N行,每行6个数据,分别对应一个同学的:语文、数学、英语、信息技术成绩和信息技术及数学的排名。
数据范围:
1<=N<=45;
每个成绩C的范围为:0<=C<=120;
输入/输出例子1
输入:
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 97 103 92 3 2
我们先来了解一下结构体:
在实际问题中,一组数据往往具有不同的数据类型。例如,人口大普查时,我们需要记录每一位公民的姓名,年龄,性别,住址,身份证号码。这些信息分别要用整型,字符型,字符串型来记录。为了解决问题,C++语言给出了另一种构造数据类型——“结构体”,它在数据存储方面相当于其他高级语言中的记录,但它有着面向对象的优势。
结构体变量的定义有两种方式:
定义结构体的同时定义结构体变量
struct 结构体名{//其中 struct 是关键字
成员表 //可以有多个成员
成员函数 //可以有多个成员函数,也可以没有
} 结构体变量表; //可以同时定义多个结构体变量
结构体变量名列表的各个变量用“,”隔开。
例如:
struct DATA{
int a[2]; //成员为一个数组
int c;
}data_a,data_b;
当然,我们也可以先定义结构体再定义结构体变量
struct 结构体名{
成员表
成员函数
};
结构体名 结构体变量表;//同样可以同时定义多个结构体变量
例如:
struct DATA{
int a[2];
int c;
};
DATA data_a,data_b;//这种定义方式与上一种方式的效果是相同的
了解结构体,现在,我们先定义一个简单的结构体,这个结构体将用来记录一个学生的大致情况,所以它的成员应该有学号、姓名、性别、年龄、成绩、家庭住址等。
#include<iostream>
using namespace std;
struct student{
int num; //学号
char name[21]; //姓名
char sex; //性别
int age; //年龄
float score; //成绩
char address[51]; //家庭住址
}a,b;//此处不可忽略分号
int main()
{
cin>>a.num>>a.name>>a.sex>>a.age>>a.score>>a.address;
cin>>b.num>>b.name>>b.sex>>b.age>>b.score>>b.address;
cout<<a.num<<' '<<a.name<<' '<<a.sex<<' '<<a.age<<' '<<a.score<<' '<<a.address<<endl;
cout<<b.num<<' '<<b.name<<' '<<b.sex<<' '<<b.age<<' '<<b.score<<' '<<b.address<<endl;
return 0;
}
代码:
#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++)
{
scanf("%lld%lld%lld%lld",&sorts[i].yw,&sorts[i].sx,&sorts[i].yy,&sorts[i].xx);
}
return 0;
}