問題 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;
}