03:成绩排序
描述
给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。
输入第一行为n (0 < n < 20),表示班里的学生数目;
接下来的n行,每行为每个学生的名字和他的成绩, 中间用单个空格隔开。名字只包含字母且长度不超过20,成绩为一个不大于100的非负整数。输出把成绩单按分数从高到低的顺序进行排序并输出,每行包含名字和分数两项,之间有一个空格。
样例输入
4 Kitty 80 Hanmeimei 90 Joey 92 Tim 28样例输出
Joey 92 Hanmeimei 90 Kitty 80 Tim 28
题意总结
首先输入学生数目n,接下来的n行每行为一个学生的名字和他的成绩,中间用空格隔开。从大到小输出学生成绩和名字如果有相同分数则名字字典序小的在前。
解题思路
建立结构体数组w,用来存储成绩。输入名字与成绩。对于从大到小排序我们可以使用sort。最后输出排序后的名字与成绩,不要忘记用空格隔开。
代码解决
#include<bits/stdc++.h>
using namespace std;
struct a{ //绑定学生的成绩与名字
string n;
int lj;
};
bool c(a d,a e){
if(d.lj==e.lj){//如果成绩相同
return d.n<e.n;//按照名字从大到小排序
}
else{//否则
return d.lj>e.lj;//按照成绩从大到小排序
}
}
int main(){
int n;
cin>>n;//输入学生人数
a w[10000];
for(int i=1;i<=n;i++){
cin>>w[i].n>>w[i].lj;//输入名字和成绩
}
sort(w+1,w+n+1,c);//从大到小排序成绩
for(int i=1;i<=n;i++){
cout<<w[i].n<<" "<<w[i].lj<<endl;//输出排序好的成绩,需要换行并且用空格隔开
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通