ACMNO.44 C語言-平均分 有N個學生,每個學生的資料包括學號、姓名、3門課的成績,從鍵盤輸入N個學生的資料,要求打印出3門課的總平均成績,以及最高分的學生的資料(包括學號、姓名、3門課成績)
阿新 • • 發佈:2019-01-04
題目描述
有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
來源/分類
C語言
題目截圖:
思路:
感覺也沒啥,就是利用結構體來解決就比較容易啦! 用一用求平均數的程式碼。再進行高分篩選,然後輸出就好啦!
在這篇文章裡面是最好的體現啦:
ACMNO.43 C語言-成績排序 利用結構體解決,是一個進步啦!
程式碼:
#include<iostream> #include<string> #include<istream> using namespace std; struct ss{ string a; string b; int x; int y; int z; }; void input(ss *s,int n) { for(int i=0;i<n;i++) cin>>s[i].a>>s[i].b>>s[i].x>>s[i].y>>s[i].z; } void output(ss *s,int n) { int x,y,z;int a=0;int sum=0;x=y=z=0; for(int i=0;i<n;i++) {x+=s[i].x;y+=s[i].y;z+=s[i].z;} cout<<x*1.0/n<<" "<<y*1.0/n<<" "<<z*1.0/n<<endl; for(int i=0;i<n;i++) { if(s[i].x+s[i].y+s[i].z>sum) {a=i;sum=s[i].x+s[i].y+s[i].z;} } cout<<s[a].a<<' '<<s[a].b<<' '<<s[a].x<<' '<<s[a].y<<' '<<s[a].z<<endl; } int main() { int n;ss s[500]; cin>>n; input(s,n); output(s,n); }
程式碼截圖:
程式碼執行截圖:
OJ結果: