奖学金
题目
题目分析
- 由题目可知,该题涉及到五个属性:学号,语文分数,数学分数,英语分数,总分;由于我们需要通过输入语文、数学、英语分数,经过操作后,输出学号与总分,所以我们可以通过结构体进行存储。
下面是有关结构体的信息:结构体信息
2.下面是排序优先级的要求:
- 先按总分从高到低排序。
- 如果两个同学总分相同,再按语文成绩从高到低排序。
- 如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面
我们可以通过专门使用一个函数来处理该排序是否正确,为了节省时间,我们可以调用sort函数排序,再通过一个函数来确认sort函数排序是否正确
代码
#include <iostream> #include <algorithm> using namespace std; struct student { int id; int c,m,e; int sum; }s[300]; bool cmp(student a,student b) { if(a.sum>b.sum) return true; else if (a.sum<b.sum) return false; else { if(a.c>b.c) return true; else if(a.c<b.c) return false; else { if (a.id>b.id) return true; else return false; } } } int main() { int n; cin>>n; for(int i=1;i<=n;i++) { s[i].id=i; cin>>s[i].c>>s[i].m>>s[i].e; s[i].sum=s[i].c+s[i].m+s[i].e; } sort(s+1,s+n+1,cmp); for(int i=1;i<=5;i++) { cout<<s[i].id<<' '<<s[i].sum<<endl; } return 0; }
标签:sort,排序,return,int,sum,c++,蓝桥,总分,例题 From: https://www.cnblogs.com/hcrzhi/p/17809198.html