//题目描述
//在一次跳水比赛中,当一名参赛选手完成比赛后,有7个评委给分(百分制),按照比赛规则,去掉一个最高分,一个最低分,其余5位评委的分数总和即为该选手的最终得分。假设一共有n个选手参加比赛,请编写程序,创建参赛选手的结构体,按照分数从高到低的顺序输出选手的姓名和分数,姓名和分数之间用空格分隔,每名选手一行。
//注:不考虑分数相同的情况。不允许使用STL
//输入
//第1行为一个正整数n,表示参赛人数。随后n行,每行开始为选手的名字,随后7个正整数表示评委亮分情况,数据间以空格分隔。
//输出
//按照分数从高到低的顺序输出选手的姓名和分数,姓名和分数之间用空格分隔,每名选手一行,总计n行。
//样例输入
//4
//Alice 90 90 85 92 90 90 90
//Bob 92 99 88 92 92 92 92
//Cindy 80 85 94 94 94 94 94
//Dony 95 95 100 90 95 95 95
//样例输出
//Dony 475
//Cindy 461
//Bob 460
//Alice 450
#include<iostream>
using namespace std;
struct p {
char name[100];
int score[7];
int sum;
}num[100];
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> num[i].name;
for (int j = 0; j < 7; j++) {
cin >> num[i].score[j];
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < 7; j++) {
int ttt;
for (int t = 0; t < 6 - j; t++) {
if (num[i].score[t] > num[i].score[t + 1]) {
ttt = num[i].score[t + 1];
num[i].score[t + 1] = num[i].score[t];
num[i].score[t] = ttt;
}
}
}
}
for (int i = 0; i < n; i++)
num[i].sum = 0;
for (int i = 0; i < n; i++) {
for (int j = 1; j < 6; j++) {
num[i].sum += num[i].score[j];
}
}
p temp;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (num[j].sum < num[j + 1].sum) {
temp = num[j];
num[j] = num[j + 1];
num[j + 1] = temp;
}
}
}
for (int i = 0; i < n; i++) {
cout << num[i].name << ' ' << num[i].sum << endl;
}
}
大一上 上机.zip
需积分: 0 59 浏览量
2023-12-13
19:13:17
上传
评论
收藏 2KB ZIP 举报
2301_78834082
- 粉丝: 0
- 资源: 1