原题链接:[编程入门]结构体之成绩统计2
解题思路:
在1050题的基础上;
添加一个平均分成员变量ave;
在主函数中,所有成绩的平均分输出;
输出,个人平均分最高的学生信息;
下面代码只是给思路,不是纯正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);
}别忘点赞哦-.-
0.0分
21 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
@豆豆哦 补充: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)); }#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<=