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

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

有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++解答

#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;
}