求助,大家来看看
#include "stdio.h"#include "math.h"
void aver(float*);
void output(float*,int*);
void check(float*,int*);
main()
{
int i,j,num[4],*p1;
float score[4][5],*p2;
char course[5][10],*p3;
p1=&num[0];
p2=&score[0][0];
printf("\nInput the courses:");
for(i=0;i<5;i++)
{
scanf("%s",course[i]);
}
printf("\nInput the NO.and score:");
for(i=0;i<4;i++)
{
scanf("%d",&num[i]);/*注意数组前+取地址符号*/
for(j=0;j<5;j++)
{
scanf("%f",&score[i][j]);
};/* 输入*/
}
for(i=0;i<4;i++)
printf("%d",*p1++);
aver(p2);
output(p1,p2);
check(p1,p2);
}
void aver(float *p)/*求一门课的平均成绩*/
{
int i;
float sum=0,aver;
for(i=0;i<4;i++)
{
sum+=*(p+5*i);
}
aver=sum/4;
printf("The average of the first course is: %.2f\n",aver);
}
void output(float *p2, int *p1)
{
float *p,*temp,sum,aver;
int i,j,flag;
printf("===========The failed students==========\n");
printf("===number====score==============aver\n");
for(i=0;i<4;i++,p2+=5)/*查找不及格学生*/
{
sum=0;
flag=0; /这部分有问题.读过来的成绩都是00000,为什么,是实参和形参的问题吗?/
aver=0;/*初值*/
p=p2;
temp=p2;
for(j=0;j<5;j++,p++)
{
if(*p<60)
flag+=1;
}
if(flag>=2)
{
printf("%3d",*(p1+i));/*输出学号*/
for(j=0;j<5;j++)
{
printf(" %.2f",*temp++);/*输出成绩*/
}
for(j=0,p=p2;j<5;j++,p++)
{
sum+=*p;
}
aver=sum/5;
printf(" %.2f\n",aver);/*输出平均值*/
}
}
}
void check(float *p2,int *p1)
{
float *p,aver,sum=0;
int i,j,num=0,flag=0;/*置标志位*/
printf("===========The good students==========\n");
printf("===========number=================\n");
for(i=0,p=p2;i<4;i++,p2+=5)
{
for(j=0;j<5;j++,p++)
{
if(*p>85)
num+=1;
}
if(num==5)
{
flag=1;
printf("%3d",*(p1+i));/*每门成绩都>85输出学号*/
}
for(j=0,p=p2;j<5;j++,p++)
{
sum+=*p;
}
aver=sum/5;
if( (aver>90) && (flag==0))
{
printf("%3d",*(p1+i));/*平均成绩>90输出学号*/
}
}
}
搞不定了,高手来看看