欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > PAT甲级-1028 List Sorting

PAT甲级-1028 List Sorting

2024/10/25 0:24:48 来源:https://blog.csdn.net/weixin_74092648/article/details/142186278  浏览:    关键词:PAT甲级-1028 List Sorting

题目

 

题目大意

输入给出学生数目和C值,以及每个学生的信息。要求按照C值对学生信息作出不同的排序,如果C为1,就将学号升序排列;如果C为2,将学生姓名非递减排序;如果C为3,将学生分数非递减排序。如果不同学生的分数或名字相同,按学号增序输出。

思路

这是一道比较简单的排序题,构造结构体,再按照题目模拟即可,用sort()排序。 

代码

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;struct student{string id;string name;int score;
};bool cmp1(student x, student y){return x.id < y.id;
}  // id长度都相同,可以直接用字符串比较大小
bool cmp2(student x, student y){return x.name == y.name ? x.id < y.id : x.name < y.name;
}
bool cmp3(student x, student y){return x.score == y.score ? x.id < y.id : x.score < y.score;
}int main(){int n, c;cin >> n >> c;vector<student> v(n);for (int i = 0; i < n; i++){cin >> v[i].id >> v[i].name >> v[i].score;}if (c == 1){sort(v.begin(), v.end(), cmp1);}else if(c == 2){sort(v.begin(), v.end(), cmp2);}else{sort(v.begin(), v.end(), cmp3);}for (int i = 0; i < n; i++){cout << v[i].id << " " << v[i].name << " " << v[i].score << endl;}return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com