0
点赞
收藏
分享

微信扫一扫

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


题目描述

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

代码截图:

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


代码执行截图:

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


OJ结果:

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


举报

相关推荐

0 条评论