题目描述
张琪曼指导了10个魔法学徒,每个学徒的数据包括学号、姓名、三门课的成绩,从键盘输入10个学生的数据,要求打印出三门课总平均成绩,以及最高分的学生数据(包括学号、姓名、三门课成绩的平均分数)。
输入描述
标准输入,共10行数据,分别为每个学徒的学号(整型),姓名(不超过8个字符)和三门课的成绩,以空格间隔。
输出描述
标准输出,第一行为三门课总平均成绩,第二行为总平均成绩最高分(保证没有并列的最高成绩)的学徒数据(包括学号、姓名、平均分数)以空格间隔,输出的浮点数小数点后保留两位,不考虑四舍五入。
样例
输入
1 A 100 100 100 2 B 80 80 80 3 C 80 80 80 4 D 80 80 80 5 E 80 80 80 6 F 80 80 80 7 G 80 80 80 8 H 80 80 80 9 I 80 80 70 10 J 80 80 80
输出
81.67 1 A 100.00
来源
算法宝典1 结构体
答案
#include<bits/stdc++.h>
using namespace std;
struct student{
int id;
char name[8];
int score[3];
double avg;
} arr[10];
int main(){
double sum = 0;
for(int i = 0; i < 10; i++){
cin >> arr[i].id >> arr[i].name;
for(int j = 0; j < 3; j++){
cin >> arr[i].score[j];
arr[i].avg += arr[i].score[j];
}
arr[i].avg /= 3;
sum += arr[i].avg;
}
int mx_i = 0;
for(int i = 0; i < 10; i++){
if(arr[mx_i].avg < arr[i].avg)
mx_i = i;
}
cout << fixed << setprecision(2) << sum / 10 << "\n";
cout << arr[mx_i].id << " " << arr[mx_i].name << " ";
cout << fixed << setprecision(2) << arr[mx_i].avg;
}