题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩
都按先录入排列在前的规则处理。
示例:
jack 70
peter 96
Tom 70
smith 67
从高到低 成绩
peter 96
jack 70
Tom 70
smith 67
从低到高
smith 67
jack 70
Tom 70
peter 96
代码:
# include <iostream>
# include <algorithm>
using namespace std;
typedef struct stu{
char name[20];
int score;
int i;
}Stu;
int cmp1(struct stu a,struct stu b){
if(a.score != b.score){
return a.score < b.score;
}else{
return a.i < b.i;
}
}
int cmp2(struct stu a, struct stu b){
if(a.score != b.score){
return a.score > b.score;
}else{
return a.i < b.i;
}
}
int main(){
int num;
int flag;
while(scanf("%d%d",&num,&flag) != EOF){
Stu *a = new Stu[num];
for(int i = 0; i < num ; ++i){
scanf("%s%d",&a[i].name,&a[i].score);
a[i].i= i;
}
if(flag == 0){
sort(a,a+num,cmp2);
}else{
sort(a,a+num,cmp1);
}
for(int i = 0; i < num ; ++i){
printf("%s %d\n",a[i].name, a[i].score);
}
}
return 0;
}
本文介绍了一个使用C++实现的成绩排序算法,能够根据用户输入的姓名和成绩,按成绩高低进行排序,相同成绩按录入顺序排列。通过定义结构体和自定义比较函数,实现了灵活的排序功能。
序列,可以获得成绩从高到低或从低到高的排列,相同成绩 都按先录入排列在前的规则处理。&spm=1001.2101.3001.5002&articleId=87883626&d=1&t=3&u=4ccd354de6424629924aadfc45ce8d1a)
2902

被折叠的 条评论
为什么被折叠?



