游客 Signup | Login
中文 | En

1343 - C语言程序设计教程(第三版)课后习题11.5

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

Input

学生数量N占一行

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

Output

各门课的平均成绩

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

Examples

Input

2
1 blue 90 80 70
b clan 80 70 60

Output

85 75 65
1 blue 90 80 70

Solution C++

#include<iostream>
#include<string>
#include<cstdio>
using namespace std;
struct student{
	string num;
	string name;
	int score[3];
	double average;
};
student a[10000];
int ave[3];
void input(student a[],int n)
{
	for (int i=0; i<n; i++)
	{
		cin>>a[i].num>>a[i].name>>a[i].score[0]>>a[i].score[1]>>a[i].score[2];
		a[i].average=(a[i].score[0]+a[i].score[1]+a[i].score[2])/3;
		ave[0]+=a[i].score[0];
		ave[1]+=a[i].score[1];
		ave[2]+=a[i].score[2];
	}
	for (int i=0; i<3; i++) ave[i]/=n;
}
int find(student a[],int n)
{
	int maxt=0;
	for (int i=1; i<n; i++)
		if (a[i].average>a[maxt].average) maxt=i;
	return maxt;
}
int main()
{
	int n;
	cin>>n;
	input(a,n);
	printf("%d %d %d\n",ave[0],ave[1],ave[2]);
	int t=find(a,n);
	cout<<a[t].num<<" "<<a[t].name<<" "<<a[t].score[0]<<" "<<a[t].score[1]<<" "<<a[t].score[2]<<endl;
	return 0;
}
Time Limit 1 second
Memory Limit 128 MB
Discuss Stats
上一题 下一题