原题链接:奖学金
解题思路:
利用STL中的sort函数即可很简单实现。
(1)先按照总分排序;
(2)总分相同再按照语文排序;
(3)语文相同,则按照学号排序。
(4)输出前5项即可。
参考代码:
#include <bits/stdc++.h> using namespace std; typedef struct { int num; //学号 int score[3]; //三门成绩,分别是语文,数学,英语 int sum; //总分 }Student; bool cmp(Student s1,Student s2) { if(s1.sum!=s2.sum) return s1.sum>s2.sum ; if(s1.score[0]!=s2.score[0]) return s1.score[0]>s2.score[0]; return s1.num<s2.num; } int main() { int n; Student s[305]; cin>>n; for(int i=0;i<n;i++) { s[i].sum=0; for(int j=0;j<3;j++) { cin>>s[i].score[j]; s[i].sum+=s[i].score[j]; } s[i].num=i+1; } sort(s,s+n,cmp); for(int i=0;i<5;i++) { cout<<s[i].num<<" "<<s[i].sum<<endl; } return 0; }
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复