题解 | #成绩排序#
成绩排序
https://www.nowcoder.com/practice/0383714a1bb749499050d2e0610418b1
#include "stdio.h"
#include "algorithm"
#include "string"
using namespace std;
struct Student{
char name[20];
int grade;
int count;//录入顺序
};
bool comp1(Student lhs,Student rhs){//降序
if (lhs.grade>rhs.grade)
return true;
else if (lhs.grade==rhs.grade && lhs.count<rhs.count)
return true;
else
return false;
}
bool comp2(Student lhs,Student rhs){//升序
if (lhs.grade<rhs.grade)
return true;
else if (lhs.grade==rhs.grade && lhs.count<rhs.count)
return true;
else
return false;
}
int main(){
int n;
int flag;//flag:0为降序,1为升序
Student stu[1000];
while (scanf("%d %d",&n,&flag)!=EOF){
for (int i = 0; i < n; ++i) {
scanf("%s %d",stu[i].name,&stu[i].grade);
stu[i].count=i;
}
if(flag==0)
sort(stu,stu+n, comp1);
else
sort(stu,stu+n, comp2);
for (int i = 0; i < n; ++i) {
printf("%s %d\n",stu[i].name,stu[i].grade);
}
}
}