请问我这段代码哪里错了?

题目是输入3个学生的4科成绩,输出每个人的平均成绩和所有成绩中的最高和最低值:
#include
int max(int c[][4]);
int min(int b[][4]);
void average(int e[][4]);
main()
{
int a[3][4];
int i=0,j;
printf("分别输入3个人的4门成绩:\n");
for(i=0;i {
printf("第%d个人\n",i+1);
for(j=0;j {
scanf("%d",&a[i][j]);
}
printf("\n");
}
int mi,ma;
mi=min(a);
ma=max(a);
printf("最高成绩为%d\n",max);
printf("最低成绩为%d\n",min);
average(a);
}
int min(int b[][4])
{
int *q=b[0];
int j,k=0;
for(j=1;j {
if(*(q+k)>(q+j)) k=j;
}
return *(q+k);
}
int max(int c[][4])
{
int *q=c[0];
int j,k=0;
for(k=0;j<12;j++)
{
if(
(q+k)>(q+j)) k=j;
}
return *(q+k);
}
void average(int e[][4])
{
float j,m,n,h,q,f,i;
int *p=e[0],k=0,sum1=0,sum2=0,sum3=0;
for(i=0;k<12;k++)
{
if(k<4)
{
sum1=sum1+(
(p+i));
i++;
}
else
if(k<8)
{
sum2=sum2+(*(p+i));
i++;
}
else
{
sum3=sum3+(*(p+i));
i++;
}
}
j=(float)sum1,m=(float)sum2,n=(float)sum3;
h=j/3.0,q=m/3.0,f=n/3.0;
printf("第一个学生平均成绩:%5.2f,第二个学生平均成绩:%5.2f,第三个学生平均成绩:%5.2f\n",h,q,f);
}

c

2个回答

max () 函数中 j 未赋初值

91program
91program 求平均数 average() 中即然后知道是 3 个学生,为什么不用两重循环呢。因一重循环,然后又4/8的判断,不好。
接近 6 年之前 回复

for(j=1;j {
if(*(q+k)>(q+j)) k=j;
}
这种地方,只判断了一种情况,你应该分大于和小于两种情况,而且每循环一次,应该k和j的值也应该+1啊

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐