奖学金

排序函数
#include<bits/stdc++.h>
using namespace std;
struct stu{
int id; //学号
int c,m,e; //语、数、外
  int sum;
}st[305];
bool cmp(stu a,stu b){ //自行定义比较函数
  if(a.sum > b.sum) return true;
  else if(a.sum < b.sum) return false;
else{ //a.sum == b.sum
if(a.c > b.c) return true; //总分相同比较语文成绩
else if(a.c < b.c) return false;
else{ //a.c == b.c
if(a.id > b.id) return false; //最后比较学号
else return true;
}
}
}
int main(){
int n; cin>>n;
for(int i=1;i<=n;i++){
st[i].id = i; //学号
cin >> st[i].c >> st[i].m >> st[i].e;
st[i].sum = st[i].c + st[i].m + st[i].e; //总分
}
sort(st+1,st+1+n,cmp); //用cmp()排序
for(int i=1;i<=5;i++) cout << st[i].id << ' ' << st[i].sum << endl;
return 0;
}

笔记:排序可以手写,也可以直接使用库函数,排序规则可以手写放到函数库的参数里

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注