问题描述
- 请问我这段代码哪里错了?
-
题目是输入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("最高成绩为%dn",max);
printf("最低成绩为%dn",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.2fn",h,q,f);
}
解决方案
max () 函数中 j 未赋初值
解决方案二:
for(j=1;j {
if(*(q+k)>(q+j)) k=j;
}
这种地方,只判断了一种情况,你应该分大于和小于两种情况,而且每循环一次,应该k和j的值也应该+1啊
时间: 2024-09-11 17:32:24