1. 程式人生 > >ACMNO.44 C語言-平均分 有N個學生,每個學生的資料包括學號、姓名、3門課的成績,從鍵盤輸入N個學生的資料,要求打印出3門課的總平均成績,以及最高分的學生的資料(包括學號、姓名、3門課成績)

ACMNO.44 C語言-平均分 有N個學生,每個學生的資料包括學號、姓名、3門課的成績,從鍵盤輸入N個學生的資料,要求打印出3門課的總平均成績,以及最高分的學生的資料(包括學號、姓名、3門課成績)

題目描述

有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結果:
在這裡插入圖片描述