问题 B: 各门课的成绩 课后习题11.5
时间限制: 1 Sec 内存限制: 128 MB
提交: 284 解决: 210
[提交][状态][讨论版][命题人:外部导入]
题目描述
有N个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入N个学生的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩)
输入
学生数量N占一行每个学生的学号、姓名、三科成绩占一行,空格分开。
输出
各门课的平均成绩 最高分的学生的数据(包括学号、姓名、3门课成绩)
样例输入
2 1 blue 90 80 70 b clan 80 70 60
样例输出
85 75 65 1 blue 90 80 70
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
//定义结构体包括六个变量:学号,姓名,三科成绩,3门课的总成绩
struct student
{
string number;
string name;
double score1,score2,score3;
double score_sum;
}s[1000];
int main()
{
//定义学生数量
int student_number;
//定义三门课总分
double class1_sum=0,class2_sum=0,class3_sum=0;
//定义总分最大值初始化0
double score_max=0;
//定义标记
int mark;
cin>>student_number;
for(int i=0;i<student_number;i++)
{
cin>>s[i].number>>s[i].name>>s[i].score1>>s[i].score2>>s[i].score3;
//更新三门课各科的总成绩
class1_sum+=s[i].score1;
class2_sum+=s[i].score2;
class3_sum+=s[i].score3;
s[i].score_sum=s[i].score1+s[i].score2+s[i].score3;
//更新总分最大值,标记这个学生
if(s[i].score_sum>score_max)
{
score_max=s[i].score_sum;
mark=i;
}
}
cout<<class1_sum/student_number<<" "<<class2_sum/student_number<<" "<<class3_sum/student_number<<endl;
cout<<s[mark].number<<" "<<s[mark].name<<" "<<s[mark].score1<<" "<<s[mark].score2<<" "<<s[mark].score3<<endl;
}