解题思路:
注意事项:有点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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复