代码:
#include<stdio.h>
int main(){
void avsco(float *pscore,float *paver);
void avg(char (*pcourse)[10],float *pscore);
void fail2(char course[5][10],int num[],float *pscore,float aver[4]);
void good(char course[5][10],int num[4],float *pscore,float aver[4]);
int i,j,num[4],*pnum;
float score[4][5],*paver,*pscore,aver[4];
char (*pcourse)[10],course[5][10];//pcourse指向一位数组
printf("plese input course:");
pcourse=course;
for(i=0;i<5;i++)
scanf("%s",course[i]);
pscore=&score[0][0];
pnum=&num[0];
for(i=0;i<4;i++){
scanf("%d",pnum+i);
for(j=0;j<5;j++)
scanf("%f",pscore+5*i+j);
}
paver=&aver[0];
printf("\n");
avsco(pscore,paver);
avg(pcourse,pscore);
printf("\n");
fail2(pcourse,pnum,pscore, paver);
printf("\n");
good(pcourse,pnum,pscore,paver);
return 0;
}
//求每个学生成绩的平均数
void avsco(float *pscore,float *paver){
int i,j;
float sum,average;
for(i=0;i<4;i++){
sum=0;
for(j=0;j<5;j++)
sum=sum+(*(pscore+5*i+j));
average=sum/5;
*(paver+i)=average;
}
}
//求第一课程的平均成绩
void avg(char (*pcourse)[10],float *pscore){
int i;
float sum=0.0,average1;
for(i=0;i<4;i++)
sum=sum+(*(pscore+5*i));
average1=sum/4;
printf("course 1:%s average score :%7.2f\n",*pcourse,average1);
}
//找两门以上不及格的学生的函数
void fail2(char course[5][10],int num[],float *pscore,float aver[4]){
int i,j,k,label;
printf("=============Student who is fail in two courses=======\n");
printf("NO.");
for(i=0;i<5;i++)
printf("%11s",course[i]);
printf(" average\n");
for(i=0;i<4;i++){
label=0;
for(j=0;j<5;j++)
if(*(pscore+5*i+j)<60.0) label++;
if(label>=2)
{
printf("%d",num[i]);
for(k=0;k<5;k++)
printf("%11.2f",*(pscore+5*i+k));
printf("%11.2f\n",aver[i]);
}
}
}
//找出成绩优秀的学生(各门成绩在85以上或平均分在90分以上)的函数
void good(char course[5][10],int num[4],float *pscore,float aver[4]){
int i,j,k,n;
printf("=============Student who is fail in two courses=======\n");
printf("NO.");
for(i=0;i<5;i++)
printf("%11s",course[i]);
printf(" average\n");
for(i=0;i<4;i++){
n=0;
for(j=0;j<5;j++)
if(*(pscore+5*i+j)>85) n++;
if(n==5||aver[i]>=90){
printf("%d",num[i]);
for(k=0;k<5;k++)
printf("%11.2f",*(pscore+5*i+k));
printf("%11.2f\n",aver[i]);
}
}
}
运行结果: