#include
struct student
{
char name[];
float course[5];
}stu[20];
void average(struct student p)
{
float aver=0;
int i,j;
for(i=0;i<20;i++)
{for(j=0;j<=4;j++)
{aver+=(((p+i)).course[j])/5.0;}
printf("%10s:average is %5f\n",((*(p+i)).name,aver);
}
}
void each_average(struct student p)
{
int i,j;
float aver=0;
for(j=0;j<=4;j++)
{for(i=0;i<20;i++)
{aver+=(((p+i)).course[j])/20.0;}
printf("%f ",aver);
}
}
void max_min(struct student p)
{
int i,j,k,t;
for(k=0;k<=4;k++)
{for(i=0;i<20;i++)
{for(j=i+1;j<20;j++)
if((((p+i)).course[k])>((*(p+j)).course[k]))
{t=((*(p+i)).course[k]);
((*(p+i)).course[k])=((*(p+j)).course[k]);
((*(p+j)).course[k])=t;
}
}
printf("max=%f,min=%f\n",(*(p+19)).course[k],(*p).course[k]);
}
}
void unpass_student(struct student *p)
{
int i,k;
for(k=0;k<=4;k++)
{
for(i=0;i<20;i++)
{
if((*(p+i)).course[k]<60.0)
printf("%s ",(*(p+i)).name);
}
}
}
int main()
{
int i;
struct student *p;
p=stu;
float max,min;
printf("输入学生名字,用回车隔开");
for(i=0;i<20;i++)
scanf("%s",student[i].name);
printf("输入学生各科成绩,用逗号隔开");
for(i=0;i<20;i++)
scanf("%f,%f,%f,%f,%f",stu[i].course[0],stu[i].course[1],stu[i].course[2],stu[i].course[3],stu[i].course[4]);
for(i=0;i<20;i++)
printf("%10s:%5f,%5f,%5f,%5f,%5f",stu.name[i],stu[i].course[0],stu[i].course[1],stu[i].course[2],stu[i].course[3],stu[i].course[4]);
average(p);
each_average(p);
max_min(p);
unpass_student(p);
return 0;
}