这个问题我编了一晚上,问题特别大,很郁闷,哎,大家帮帮忙吧,帮我看看,要不觉都睡不着啊,问题很多如果您没时间,看到什么问题就哪怕一点点,不胜感激啊!!
下面是题和我写的程序:
有一个班4个学生,5门课。(1)求第一门课的平均分;(2)找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均成绩;(3)找出平均成绩在90分以上或全部课程成绩在85分以上的学生。分别编3个函数实现以上3个要求。
main()
{
static float a[4][5]={{90,91,92,93,91},{86,89,88,87,86},
{36,64,53,87,90},{56,89,55,64,96}};
float aver;
void average(),failtwo(),find();
average(a);
printf("\n");
failtwo(a);
printf("\n");
find(a);
}
void average(float *p[5])
{
int i;
float sum=0,aver;
for(i=0;i<3;i++)
sum=(**(p+i))+sum;
aver=sum/4;
printf("1.question:the average score is %5.2f\n",aver);
}
void failtwo(float *p[5])
{
int i,j,n,k,m;
float failav,sum;
for(i=0;i<4;i++)
{ k=0,sum=0;
for(j=0;j<5;j++)
if(*(*(p+i)+j)<60) k=k+1;
if(k>=2)
{
printf("the number %d is fail\n",i+1);
printf("the scores are:\n");
for(j=0;j<5;j++)
printf("%5.2f",*(*(p+i)+j));
printf("\n");
for(j=0;j<5;j++)
sum=sum+(*(*(p+i)+j));
failav=sum/5;
printf("failav=%5.2f\n",failav);
}
}
}
void find(float *p[5])
{
int i,j,flag;
float aver,sum;
for(i=0;i<4;i++)
{
sum=0,flag=0;
for(j=0;j<5;j++)
{
if(*(*(p+i)+j)>85) flag=flag+1;
sum=sum+(*(*(p+i)+j));
}
aver=sum/4;
if(flag==4)
printf("3.question:No.%d\n",i+1);
else if(aver>90) printf("3.question:No.%d\n",i+1);
}
}
----------六楼留