//##################################输出各班各科平均成绩################################################
void classave(struct student *head)//输出各班各门功课的平均成绩和总平均成绩 {
int c[N]={0},i,j;
struct student *s,*p=NULL;
float sum[8]={0},a[8],av=0,b=0; if(head==NULL)
printf(\没有学生信息\\n\\n\\n\\n\\n\\n\ else {
for(i=1;i s=head; while(s!=NULL) { if(s->Class==i)//寻找班级相同的学生 { c[i]++; p=s; for(j=0;j sum[j]=sum[j]+s->cou[j].total;//i班的各门功课总成绩相加 } s=s->next; } if(p!=NULL) { printf(\***************\\n\ printf(\班每科平均成绩与总平均成绩###########################* \ printf(\*************\\n\\n\ printf(\班级 课程名称 平均分\\n\ for(j=0;j a[j]=sum[j]/c[i];//i班各门功课的平均分 sum[j]=0; printf(\ _____________\\n\ if(i<=9) printf(\ else if(i<100) printf(\ else printf(\ av=av+a[j];//i班各门功课的平均分相加 } b=av/p->subject;//i班总平均分 printf(\============\\n\ printf(\该班学生总数为:%-10d班级总分为:%-9.1f总平均成绩是:%-9.1f\\n\ p=NULL; av=0; } } } } //######################################## 十 ######################################################## //##############################统计并输出每位学生的已修学分########################################## void credit(struct student *head)//输出每个同学已修学分 { struct student *p; int credit=0,i; system(\ p=head; if(head==NULL) {printf(\没有学生信息\\n\\n\\n\\n\\n\\n\ else { if(p->Class printf(\________\\n\ printf(\学生已修学分\\n\学生已修学分 printf(\________\\n\ printf(\学号 学生姓名 已修学分\\n\ } else {printf(\还 没 有 学 生 信 息,故 没 有 学 分\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\ return;} while(p!=NULL) { if(p->Class if(strcmp(\ credit=credit+p->cou[i].credit;//及格的课程的学分相加 } printf(\_________\\n\ printf(\%-16s %-20s %d\\n\ credit=0; } p=p->next;//下一个 学生 } printf(\************\\n\ printf(\已 输 出 各 位 学 生 的 总 学 分\\n\ } } //###################################### 十一 ###################################################### //##############################统计并输出不及格学生信息############################################ void failstudent(struct student *head)//列出不及格学生清单 { struct student *stu; int j,n; int k=00;//wei le··· int a=0,b=0,c=0,sum=0;//用来统计不及格学生个数 system(\ stu=head; if(head==NULL){printf(\没有学生信息\\n\\n\\n\\n\\n\\n\没有学生信息 else { if(stu->Class printf(\************\\n\ printf(\以下为不及格的学生信息 *\\n\不及格的学生 printf(\********\\n\ printf(\学号 姓名 课程名称 成绩\\n\ printf(\********\\n\ } else {printf(\还没有学生的信息,所以没有不及格的学生信息!\\n\\n\\n\\n\\n\\n\\n\\n\\n\ while(stu!=NULL) { if(stu->Class for(j=0;(strcmp(\找到第一门不及格的课程或没有不及格的课程 if(j printf(\cou[j].total); printf(\--------\\n\ n=j; if(j for(j=n+1;j if(strcmp(\寻找其他不及格的课程 {b=1;//tong ji yong printf(\j].total); printf(\-------\\n\ } } } } c=(a>b)?a:b;//tong ji yong a=b=0;//tong ji yong sum=c+sum;//tong ji yong stu=stu->next;//下一个学生 } }if(sum==0)printf(\哈哈,放心, 没有不及格的学生\\n\\n\\n\\n\\n\\n\ else printf(\【一共有 [ %d ] 位学生有不及格的科目】\\n\\n\} //##################################### 十二 ######################################################## //################################输出总的学生个数################################################### void conclude(struct student*head)//统计学生个数 { struct student*p1,*p2; int n=0; p2=p1=head; while(p1!=NULL) { p2=p1; p1=p2->next; n++; } n--; printf(\ printf(\ printf(\ printf(\ printf(\