解题思路:

注意事项:有点c的c++代码,涉及结构数组,结构数组成员数组,结构指针。

参考代码:

#include <iostream>


using namespace std;


struct Student{

char name[20];

int subject[3];

char id[20];

};

void input(struct Student *ps1, int n);

void print(struct Student *ps2, int n);

void Average(struct Student *pA, int n);


int main()

{

int N;

while(cin >> N){

if(N < 100)

{

break;

}

}

struct Student student[N];

struct Student *ps;

ps = student;

input(ps,N);


Average(ps,N);

return 0;

}

void input(struct Student *ps1, int n)

{

for ( int i=0; i<n; i++)

{

cin >> ps1[i].id;

cin >> ps1[i].name;

for( int j=0; j<3; j++){

cin >> ps1[i].subject[j];

}

}

}


void Average(struct Student *pA, int n)

{

int num[n][2];

int a;

int average[3];

int *pn = &num[0][1];

for ( int i = 0; i<n; i++){

num[i][0] = pA[i].subject[0]+pA[i].subject[1]+pA[i].subject[2]/n;

num[i][1] = i;


}


for ( int i =0; i<3; i++){

for ( int j=0; j<n; j++){

a += pA[j].subject[i];

}


average[i] = a;

a = 0 ;

}

//cout << '\n';

for(int i=0; i<n-1; i++){

for(int j=i+1; j<n; j++)

{

if( num[i][0] < num[j][0]){

pn = &num[j][1];

}

}

}

cout << average[0]/n << ' ' << average[1]/n << ' ' << average[2]/n << endl;

cout << pA[*pn].id << ' ' << pA[*pn].name;

for ( int i = 0; i<3; i++){

cout << ' ' << pA[*pn].subject[i];

}

}


点赞(0)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论