版权声明:转载请声明原文链接地址,谢谢! 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结果: