【每日例题】蓝桥杯 c++ 奖学金
奖学金
题目
题目分析
- 由题目可知,该题涉及到五个属性:学号,语文分数,数学分数,英语分数,总分;由于我们需要通过输入语文、数学、英语分数,经过操作后,输出学号与总分,所以我们可以通过结构体进行存储。
下面是有关结构体的信息:结构体信息
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;
}

浙公网安备 33010602011771号