解题思路:
在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 条评论

煮酒老麦 4年前 回复TA
@虎子胡 天哪,我把成绩的int换成了double也不行!
煮酒老麦 4年前 回复TA
@杨少 平均数应该是除以n,而且比较大小也有问题,这个答案只适用于两个成员
zjnmbiss 4年前 回复TA
@Sea #include<stdio.h> struct grades{ 	char number[10]; 	char name[10]; 	int a[4]; }; void input(struct grades *fun,int n);//输入  void output(struct grades *fun,int n);//输出  int main() {  int n; scanf("%d
",&n); 	struct grades fun[n]; 	input (fun,n); 	output(fun,n); 	return 0; } void input(struct grades *fun,int n ) { int i;   for(i=0;i<n;i++)   {scanf("%s %s %d %d %d
",&fun[i].number,&fun[i].name,&fun[i].a[0],&fun[i].a[1],&fun[i].a[2]);     fun[i].a[3]=fun[i].a[0]+fun[i].a[1]+fun[i].a[2];   } 		 } void output (struct grades *fun,int n) {    int i,count=0,max=0; int sum1=0,sum2=0,sum3=0; 	for(i=0;i<n;i++) 	{ 	 	if (max<fun[i].a[3])    { 	   	max=fun[i].a[3]; 	count=i;} 	sum1+=fun[i].a[0]; 	sum2+=fun[i].a[1]; 	sum3+=fun[i].a[2]; 	} 	printf("%.f %.f %.f
",double (sum1/n),double(sum2/n),double (sum3/n)); 	printf("%s %s %d %d %d",fun[count].number,fun[count].name,fun[count].a[0],fun[count].a[1],fun[count].a[2]); 	  } 大佬能帮我看看错哪儿了吗
Sea 4年前 回复TA
#include<iostream>
struct student{
	char name[10];
	char id[10];
	int a,b,c;
};
struct student D[100];
int main(int argc, char *argv[]){
	int n;
	int sum1=0;
	int sum2=0;
	int sum3=0;
	std::cin>>n;
	for(int i = 0; i<n; i++){
		std::cin>>D[i].id>>D[i].name>>D[i].a>>D[i].b>>D[i].c;
		sum1+=D[i].a;
		sum2+=D[i].b;
		sum3+=D[i].c;
	}
	std::cout<<sum1/n<<" "<<sum2/n<<" "<<sum3/n<<std::endl;
	int max = D[0].a+D[0].b+D[0].c;
	int sum = 0;
	int t = 0;
	for(int i = 0; i<n; i++){
		sum = D[i].a+D[i].b+D[i].c;
		if(sum>max){
			t = i;
		}
	}
	std::cout<<D[t].id<<" "<<D[t].name<<" "<<D[t].a<<" "<<D[t].b<<
unomti 4年前 回复TA
@tw 平时上学咋排名的?按示例的来
tw 4年前 回复TA
这问题能不能描述得严谨一点?既不说明最高成绩是以最高分还是最高平均分区分,也不说明平均分是否取整
杨少 5年前 回复TA
@杨少 [1].english,stu[1].math,stu[1].chinese);else printf("%s %s %d %d %d",stu[0].num,stu[0].name,stu[0].english,stu[0].math,stu[0].chinese);求大佬告诉错在哪
杨少 5年前 回复TA
#include <stdio.h>
struct stud
{
	char num[20];
	char name[20];
	int english;
	int math;
	int chinese;
}stu[10];
int main()
{
	int i,n,ar1,ar2,ar3,s1=0,s2=0,s3=0;
	int a[10],max;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%s%s%d%d%d",&stu[i].num,&stu[i].name,&stu[i].english,&stu[i].math,&stu[i].chinese);
		a[i]=stu[i].english+stu[i].math+stu[i].chinese;
	}
	for(i=0;i<n;i++)
	{
		s1=s1+stu[i].english;
		s2=s2+stu[i].math;
		s3=s3+stu[i].chinese;
	}
	ar1=s1/2;
	ar2=s2/2;
	ar3=s3/2;
	printf("%d %d %d\n",ar1,ar2,ar3);
	max=a[0];
	if(a[1]>max)
	printf("%s %s %d %d %d",stu[1].num,stu[1].name,stu
qweuihqqi 5年前 回复TA
#include<stdio.h>

struct student
{
	char num[10];
	char name[10];
	int score[3];
};
void input(struct student stu[],int n )
{
	for (int i = 0; i < n; i++)
	{
		scanf("%s%s%d%d%d", stu[i].num, stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
	}
}
void print(struct student stu[], int n)
{
	double a;
	for (int i = 0; i < 3; i++)
	{
		a = 0;
		for (int j = 0; j < n; j++)
		{
			a += stu[j].score[i];
		}
		printf("%.0lf ", a / n);
	}
	printf("\n");
	int c = 0,d=0;
	for (int i = 0; i < n; i++)
	{
		int b = 0;
		for (int j = 0; j < 2; j++)
		{
			b += stu[i].score[j];
			if (b>c)
虎子胡 5年前 回复TA
#include <stdio.h>
struct Student
{
	char num[100];
	char name[100];
	int a1,a2,a3;
	int sum;
}stu[50];
int main(){
	int n,i,k;
	scanf("%d",&n);
	for(i=0;i<n;i++){
		scanf("%s %s %d %d %d",stu[i].num,stu[i].name,&stu[i].a1,&stu[i].a2,&stu[i].a3);
		stu[i].sum=stu[i].a1+stu[i].a2+stu[i].a3;
	}
	int s1=stu[0].a1,s2=stu[0].a2,s3=stu[0].a3;
	int max=stu[0].sum;
	for(i=1;i<n;i++){
		if(max<stu[i].sum){
			max=stu[i].sum;
			k=i;
		}
		s1=s1+stu[i].a1;
		s2=s2+stu[i].a2;
		s3=s3+stu[i].a3;
	}
	printf("%d %d %d\n",s1/n,s2/n,s3/n);
还请大佬帮小弟看一下,老是运行错误%50!