题目解析:
结构体排序,手写cmp的sort函数用法。
题目代码:
#include<iostream>
#include<algorithm>
using namespace std;
struct node{
string name;//运动员姓名
double grade[5];//评分成绩
double dg;//难度系数
double zf;//总分
}a[20]; //运动员
int n;//运动员个数
bool comp(const node &a,const node &b){//const +引用更安全 ,传参更快
return a.zf > b.zf;//cmp bool 传参
}
int main(){
cin >> n;
for(int i = 0;i < n;i ++){
cin >> a[i].name >>a[i].grade[0] >>a[i].grade[1] >>a[i].grade[2] >>a[i].grade[3] >>a[i].grade[4] >>a[i].dg;
sort(a[i].grade,a[i].grade + 5);//排序,找出最低分和最高分,时间复杂度O(n) ,5*n;
a[i].zf = (a[i].grade[1] + a[i].grade[2] + a[i].grade[3] ) * a[i].dg;//计算总分
}
sort(a,a + n,comp);//总分排序
for(int i = 0;i < n;i ++){
cout << i + 1 <<" " <<a[i].name << " ";
printf("%.1lf\n",a[i].zf);//printf更容易控制格式,用cout需要引用iomanip头文件。
}
return 0;
}