描述
用一维数组存储学号和成绩,然后,按成绩排序输出。
输入描述:
输入第一行包括一个整数N(1<=N<=100),代表学生的个数。 接下来的N行每行包括两个整数p和q,分别代表每个学生的学号和成绩。
输出描述:
按照学生的成绩从小到大进行排序,并将排序后的学生信息打印出来。 如果学生的成绩相同,则按照学号的大小进行从小到大排序。
示例1
输入:
3 1 90 2 87 3 92
输出:
2 87 1 90 3 92
解题思路:
(1)定义学生信息结构体;
(2)根据题目所给条件定义排序规则;
代码:
#include <iostream>
#include <algorithm>
using namespace std;
struct student{ //定义学生结构体
int num;
int score;
};
int cmp(student a,student b){ //排序规则
if(a.score==b.score){ //如果分数相等
return a.num<b.num; //按学号大小排序
}else{
return a.score<b.score; //按分数大小排序
}
}
int main(){
int n;
cin>>n;
student stu[n];
for(int i=0;i<n;i++){
cin>>stu[i].num>>stu[i].score;
}
sort(stu,stu+n,cmp); //排序
for(int i=0;i<n;i++){
cout<<stu[i].num<<" "<<stu[i].score<<endl;
}
return 0;
}