📄 classaverage.cpp
字号:
#include"head.h"
#include<iostream.h>
extern void SortEachClass(Student* &);
void ClassAverage(Student* &head)
{
Student *pGuard;
Student *p;
double Average[MAX]; //各科目平均成绩
double TotalAverage; //总平均成绩
int ClassNum; //链表中的班级数
int EachClassNum; //每个班级的学生数
SortEachClass(head);
for(ClassNum=1,pGuard=head,p=pGuard;pGuard!=NULL;pGuard=pGuard->next)
{
if(pGuard->Class!=p->Class)
{
ClassNum++;
}
p=pGuard;
} //求出班级个数
pGuard=head;
for(int icount=0;icount<ClassNum;icount++)
{
for(int i=0;i<MAX;i++)
{
Average[i]=0;
}
TotalAverage=0;
EachClassNum=0; //以上把所有数据置为0
/* p=pGuard;
pGuard=p->next;
do
{
EachClassNum++; //每个班级的学生数自增
TotalAverage+=p->Average;
for(int i=0;i<MAX;i++)
{
Average[i]+=p->Score[i];
}
p=pGuard;
pGuard=pGuard->next;
}
while(pGuard!=NULL&&p->Class==pGuard->Class);*/
for(p=pGuard,pGuard=pGuard->next;pGuard!=NULL&&p->Class==pGuard->Class;pGuard=pGuard->next)
{
EachClassNum++; //每个班级的学生数自增
TotalAverage+=p->Average;
for(int i=0;i<MAX;i++)
{
Average[i]+=p->Score[i];
}
p=pGuard;
}
if(pGuard==NULL) //当pGuard为NULL时,还需要加上p节点否则结果会出错
{
EachClassNum++;
TotalAverage+=p->Average;
for(int i=0;i<MAX;i++)
{
Average[i]+=p->Score[i];
}
}
TotalAverage/=EachClassNum;
for(int count=0;count<MAX;count++)
{
Average[count]/=EachClassNum;
}
cout<<" "<<p->Class<<"班各科目的平均成绩如下:"<<endl;
cout<<" 微积分平均成绩: "<<Average[0]<<endl;
cout<<" 物理平均成绩: "<<Average[1]<<endl;
cout<<" 英语平均成绩: "<<Average[2]<<endl;
cout<<" C语言平均成绩: "<<Average[3]<<endl;
cout<<" 体育平均成绩: "<<Average[4]<<endl;
cout<<" 所有科目的平均成绩为: "<<TotalAverage<<endl<<endl<<endl;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -