Please enable java script to visit.
NOTEBOOK
HOMEPHP / MySQLJS / HTMLWXappPythonC++Blender其他
【入门】遥控飞机争夺赛【***】 - NOTEBOOK
【入门】遥控飞机争夺赛【***】
C++
Posted on 2023-08-11
摘要 : 学会使用结构体struct,以使用sort定义排序数组。
保留小数点3位,#include <iomanip>;cout << fixed<<setprecision(3);
结构体里套嵌数组。
❱ 描述:

红太阳杯遥控飞机大赛拉开帷幕。比赛规则为,每位选手让自己的飞机从起点到终点飞行5次,组委会记录5次的飞行的成绩之后去掉一个最大成绩、一个最小成绩后计算剩余3个成绩的平值(平均分保留3位小数)作为该选手的最终成绩。
有n名选手参加了比赛,从键盘读入每位选手的编号以及他们的5次飞行的成绩。
请根据n名选手的比赛成绩,编程计算出冠军、亚军、季军的编号以及组委会计算出的成绩。(假设不存在多名选手成绩正好一样)

❱ 输入描述:

第一行为一个整数n,代表参加比赛的选手数量(n>=4 && n<=100)
后面的n行,每行有6个数,第一个数是选手的编号,后5个数为选手的5次飞行的成绩

❱ 输出描述:

3行,第一行输出冠军的编号及飞行成绩(保留3位小数)用空格隔开2个数;第二行输出亚军的编号及飞行成绩,第三行输出季军的编号及飞行成绩

❱ 用例输入:

4
11 58 59 60 61 62
18 59 60 61 62 63
23 65 64 63 62 62
10 60 61 61 65 62


❱ 用例输出:

23 63.000
10 61.333
18 61.000


#include<iostream>
#include<algorithm>
#include<iomanip>
using namespace std;

// 定义结构体 flyrecord
struct flyrecords{
int id; // id
int scores[7]; // 记录成绩,数组
double avg; // 平均分
};
flyrecords a[105]; // 定义数组

bool cmp(flyrecords a,flyrecords b){ // 自定义排序函数
return a.avg > b.avg; // 根据平均分排序
}

int maxs,mins; // 找出最大值最小值,用于去除
int sum; // 单个人的总分
int main() {
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin >> a[i].id;
maxs = 0; // 初始化最大值
mins=200; // 初始化最小值
sum = 0; // 初始化总分
for(int j=1;j<=5;j++){
cin >> a[i].scores[j];
sum +=a[i].scores[j]; // 叠加总分
if(a[i].scores[j]>maxs){
maxs = a[i].scores[j]; // 找出最大分
}
if(a[i].scores[j]<mins){
mins = a[i].scores[j]; // 找出最小分
}
}
a[i].avg = (sum - maxs - mins)/3.00; // 总分-最大分-最小分,再求平均,转换成带小数
}

sort(a+1,a+1+n,cmp); // 使用自定义排序。

cout << fixed<<setprecision(3); // 小数点3位
for(int i=1;i<=3;i++){
cout<<a[i].id<<' '<<a[i].avg<<endl;
}

return 0;
}