用一维数组存储学号和成绩,然后,按成绩排序输出。
输入描述:
输入第一行包括一个整数N(1=N=100),代表学生的个数。 接下来的N行每行包括两个整数p和q,分别代表每个学生的学号和成绩。
输出描述:
按照学生的成绩从小到大进行排序,并将排序后的学生信息打印出来。 如果学生的成绩相同,则按照学号的大小进行从小到大排序。
示例1
输入
3 1 90 2 87 3 92
输出
2 87 1 90 3 92
#include <iostream>
#include <algorithm>
using namespace std;
typedef struct Student{
int num;
int grade;
}student;
student stu[100];//用数组存储信息
bool comp(student lhs,student rhs){
//不发生排序
if(lhs.grade==rhs.grade&&lhs.num<rhs.num){
return true;
} else if(lhs.grade<rhs.grade){
return true;
} else{
return false;
}
}
int main() {
int n;
scanf("%d\n",&n);
for(int i=0;i<n;i++){
scanf("%d%d\n",&stu[i].num,&stu[i].grade);
}
sort(stu,stu+n,comp);
for(int i=0;i<n;i++){
printf("%d %d\n",stu[i].num,stu[i].grade);
}
printf("\n");
return 0;
}