解题思路:结构体类型排序,运用sort函数
注意事项:
自定义比较方法:bool cmp(struct Student &a, struct Student &b)
小于5人,则全部输出
参考代码:
#include<iostream>
#include<algorithm>
using namespace std;
struct Student {
int id;
int score[3];
int sum;
}S[301];//结构体定义,结构体数组
bool cmp(struct Student &a, struct Student &b)
{
if (a.sum != b.sum) return a.sum > b.sum;//总分不相等,按总分从大到小排
if (a.score[0] != b.score[0]) return a.score[0] > b.score[0];//前提总分相等,语文分数不相等,按语文分数从大到小排
else return a.id < b.id;//总分和语文分数都相等,按学号从小到大排
}
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
S[i].sum = 0;//初始化为0
for (int j = 0; j < 3; j++)
{
cin >> S[i].score[j];
S[i].sum += S[i].score[j];
}
S[i].id = i+1;
}
sort(S, S + n, cmp);
for (int i = 0; i < 5&&S[i].sum!=0; i++)//小于5个人则判断其有无成绩,全部输出。
cout << S[i].id << " " << S[i].sum << endl;
return 0;
}
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复