学生成绩系统二代目

描述

有N个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入N个学生的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩)。

输入

学生数量N占一行

每个学生的学号、姓名、三科成绩占一行,空格分开。

输出

各门课的平均成绩最高分的学生的数据(包括学号、姓名、3门课成绩)

输入样例 1 

2
a100 zhblue 70 80 90
b200 newsclan 90 85 75

输出样例 1

80 82.5 82.5
b200 newsclan 90 85 75

输入样例 2 

3
01 guo 100 100 90
02 chen 60 70 60
03 fang 80 70 60

输出样例 2

80 80 70
01 guo 100 100 90

输入样例 3 

4
01 guo 100 100 90
02 chen 60 70 65
03 fang 80 75 65
04 zhu 85 85 70

输出样例 3

81.25 82.5 72.5
01 guo 100 100 90

输入样例 4 

2
100 zhblue 70 80 90
200 newsclan 90 85 75

输出样例 4

80 82.5 82.5
200 newsclan 90 85 75
#include 
using namespace std;
struct Student
{
	char xvehao[10];
	char name[20];
	int score[3];
};

void input(int n, Student student[])         //输入各个学生的数据
{
	for (int i = 1; i <= n; i++)
	{
		cin >> student[i].xvehao;
		cin >> student[i].name;
		for (int j = 0; j < 3; j++)
		{
			cin >> student[i].score[j];
		}
	}
}

int Sum(int score[])           //算这一个学生的总分
{
	float sum = 0;
	for (int i = 0; i < 3; i++)
	{
		sum += score[i];
	}
	return sum;
}

int main()
{
	int N;
	cin >> N;
	Student student[100];
	input(N, student);
	float S1=0, S2=0, S3=0;
	for (int i = 1; i <= N; i++)
	{
		S1 += student[i].score[0];
		S2 += student[i].score[1];
		S3 += student[i].score[2];
	}
	cout << S1 / N << " " << S2 / N << " " << S3 / N;  //输出各科的平均分
	cout << endl;
	int max = 0;
	for (int i = 1; i <= N; i++)
	{
		if (Sum(student[i].score) > max)max = Sum(student[i].score);    //得到成绩最高分
	}
	for(int i=1;i<=N;i++)
	{
		if (Sum(student[i].score)==max)           //找到成绩最高分的学生的数据输出
		{
			cout << student[i].xvehao<<" ";
			cout << student[i].name<<" ";
			for (int j = 0; j < 3; j++)
			{
				cout<< student[i].score[j]<<" ";
			}
		}
	}
	return 0;
}

你可能感兴趣的:(ACM作业,c++)