解题思路:
在1050题的基础上;

  1. 添加一个平均分成员变量ave;

  2. 在主函数中,所有成绩的平均分输出;

  3. 输出,个人平均分最高的学生信息;

  4. 下面代码只是给思路,不是纯正c++,c和c++的混合体,为了方便,就那样写了

参考代码:

#include <iostream>
#include <string.h>
using namespace std;
class student {
public:
    char    token[20];
    char    name[20];
    double    math;
    double    pe;
    double    el;
    double    ave;  //平均分


    void input();  //输入函数

    void output();  //输出函数
};

void student:: input()
{
    cin >> token;
    cin >> name;
    cin >> math;
    cin >> pe;
    cin >> el;
    ave = (math + pe + el) / 3;  //求平均分
}


void student::output()  //输出学生信息
{
    cout    << token
        << " "
        << name
        << " "
        << math
        << " "
        << pe
        << " "
        << el;
}


int main()
{
    int x;
    cin >> x;
    student *s = new student[x];  //创建对象数组

    for ( int i = 0; i < x; i++ )  //输入学生信息
        s[i].input();    

    double mave = 0, pave = 0, eave = 0;  //数学,体育,英语的平均分

    for ( int i = 0; i < x; i++ )    //求总分
    {
        mave    = mave + s[i].math;
        pave    = pave + s[i].pe;
        eave    = eave + s[i].el;
    }
    mave    /= x;   //求总体平均分
    pave    /= x;
    eave    /= x;
    int    max    = 0;   //个人平均分最高的学生下标
    double    Max    = 0;   //最大个人平均分
    cout << mave << " " << pave << " " << eave << endl;  //输出总体每科的平均分

    for ( int i = 0; i < x; i++ )   //求个人平均分最大的学生
    {
        if ( Max < s[i].ave )
        {
            Max = s[i].ave; max = i;
        }
    }

    s[max].output(); //输出个人平均分最大的学生

    return(0);
}

别忘点赞哦-.-

点赞(21)
 

0.0分

21 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 25 条评论

豆豆哦 5年前 回复TA
@豆豆哦 评论里有补充
juzi 5年前 回复TA
@豆豆哦 你好main函数咋没有呢,可以写一下吗
豆豆哦 5年前 回复TA
@豆豆哦 补充:if(max<=p->a+p->b+p->c){ 			max=p->a+p->b+p->c;  bb=p; 		}  		i++; 	} 	printf("%d %d %d\n%s %s %d %d %d\n",a[0]/=i,a[1]/=i,a[2]/=i,bb->xuehao,bb->name,bb->a,bb->b,bb->c); } void main() {  int n;  scanf("%d",&n);  print(input(n)); }
豆豆哦 5年前 回复TA
#include<stdlib.h>
#include<stdio.h>
struct stu{
	char xuehao[20];
	char name[20];
	int a;
	int b;
	int c;
	struct stu *next;
};
struct stu *input(int n){
	struct stu *head,*pb,*pf,*p;
	for(int i=0;i<n;i++){
		pb=(struct stu *)malloc(sizeof(struct stu));
		scanf("%s%s%d%d%d",&pb->xuehao,&pb->name,&pb->a,&pb->b,&pb->c);
		if(i==0){
			pf=head=pb;
		}else{
			pf->next=pb;
			pb->next=NULL;
			pf=pb;
		}
	}
	return(head);
}
void print(struct stu *head){
	struct stu *p=head,*bb;
	int a[3]={0},i=0;
	int max=p->a+p->b+p->c;
	for(;p!=NULL;p=p->next){
		a[0]+=p->a;  a[1]+=p->b;  a[2]+=p->c;
		if(max<=
小小病魔 6年前 回复TA
万一最大平均分有相同的呢?就不止一个人分数最高