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

版权声明:转载请声明原文链接地址,谢谢! https://blog.csdn.net/weixin_42859280/article/details/85564683

题目描述

有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结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42859280/article/details/85564683