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

cuyu2077 2年前 回复TA
#include<stdio.h>
#include<string.h>

typedef struct student
{
	char id[50];
	char name[50];
	int g[3];
	int sum;
}stu;

int sum(stu student)
{
	int sum = 0;
	sum = student.g[0] + student.g[1] + student.g[2];
	return sum;
}

double avg_s(stu student[], int num, int sub)
{
	int sum = 0;
	int avg = 0;
	for (int i = 0; i < num; i++)
	{
		sum += student[i].g[sub];
	}
	avg = (int)sum / num;
	return avg;
}

void max_s(stu student[], int num)
{
	int cnt = 0;
	int max = student[0].sum;
	int max_id = 0;
	while (cnt < num - 1)
	{
		if (student[cnt].sum < student[cnt + 1].sum)
		{
			max = student[cnt +
FoolHungry 2年前 回复TA
@zxj 代码不完整啊兄弟
uq_78487532311 3年前 回复TA
@tw 我也不知道最高分是什么
zxj 3年前 回复TA
#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 
 typedef struct  student_st
 {   
     char id[32];
     char name[32];
     int  score[3];
  } student_info;
  
  
  int input(student_info *P)
  {   
      scanf("%s %s %d %d %d", P->id, P->name, &P->score[0], &P->score[1], &P->sco    re[2]);
      return 0;
  }
  
  int main()
  {
      int N , i, j,  max, flag = 0;
      student_info *list;
      scanf("%d", &N);
      int sum_course[N+1];
      int sum_member[N+1];
      int average[3];
      memset(sum_course, 0, sizeof(sum_course));
      memset(sum_member, 0, sizeof(sum_me
sum666 3年前 回复TA
#include <string.h>改成#include<cstring>
昔痕 3年前 回复TA
#include <stdio.h>

struct Date
  {
  	char num[10];
  	char name[10];
  	int grade1;
  	int grade2;
  	int grade3;
  } stu[100];

int main()
  {
  	int sum1=0,sum2=0,sum3=0;
  	int ave1=0,ave2=0,ave3=0;
  	int max=0,san[100],I;
  	int N;
  	scanf("%d",&N);
  	int i;
  	for(i=0;i<N;i++)
  	  scanf("%s %s %d %d %d",&stu[i].num,&stu[i].name,&stu[i].grade1,&stu[i].grade2,&stu[i].grade3);
  	for(i=0;i<N;i++)
  	  {
  	  	sum1+=stu[i].grade1;
  	  	sum2+=stu[i].grade2;
  	  	sum3+=stu[i].grade3;
		}
	for(i=0;i<N;i++)
	  {
	  	san[i]=stu[i].grade1+stu[i].grade2+stu[i].grade3; 
	  	if(max<san[i])
Forces 4年前 回复TA
#include <stdio.h>
#include <stdlib.h>
struct Student{
    char num[100];
    char name[100];
    float grade1;
    float grade2;
    float grade3;
    }student[100];
//struct DATA data;
int main(){
    int num;
    scanf("%d",&num);
    getchar();
    for(int i=0;i<num;i++){
        scanf("%s%s%f%f%f",student[i].num,student[i].name,&student[i].grade1,&student[i].grade2,&student[i].grade3);
        getchar();
    }
    float a,b,c,sum[100];
    for(int i=0;i<num;i++)
    {
        sum[i]=(student[i].grade1+student[i].grade2+student[i].grade3);
    }
    for(int i=0;i<num;i++){
        a+=stude
天尊沐笙 4年前 回复TA
这种也太麻烦了把
天尊沐笙 4年前 回复TA
@小小病魔 题目基本上是不考虑这种极端的可能性的
Dweiwei 4年前 回复TA
#include<stdio.h>
#include<string.h>
struct student
{
	char x[10],n[10];
	int c[3];
};
int main() 
{
	struct student a[10],t[10];
	int n,k,i,j;
	int sum1=0,sum2=0,sum3=0;
	scanf("%d",&k);
	n=k;
	while(n--) 
		{
			scanf("%s %s %d %d %d",&a[n].x, &a[n].n ,&a[n].c[0],&a[n].c[1],&a[n].c[2]);  
	
			sum1+=a[n].c[0];
			sum2+=a[n].c[1];
			sum3+=a[n].c[2];
		}
		
	for(i=1;i<k;i++)
	{
		for(j=0;j<k-i;j++)
			if(a[j].c[0]+a[j].c[1]+a[j].c[2]>a[j+1].c[0]+a[j+1].c[1]+a[j+1].c[2])
				{
					t[j]=a[j];
					a[j]= a[j+1];
					a[j+1]=t[j]; 
				}
	}

	printf("%d %d %d\n",sum1/k,sum2/k,sum3/k);
	
	printf(