看看这个C的题目如何做
看看这个C的题目怎么做`
从键盘输入20个实型数,然后通过函数aver()求出它们的平均值,并将其返回。但程序中有几处错误,要求改错
题目给的代码为:
main()
{
int aver(float b[]);
float a[20],i;
for(i=0;i <20;i++)
scanf( "%f ",a[i]);
printf( "\n The average is %f ",aver(a[i]));
}
float aver(float b[])
{
float sum=0.0;
int i;
for(i=1;i <20;i++)
sum+=b[i];
ave=sum/20;
return;
}
我修改了一下``改成下面的代码``但还是不能编译成功``
main()
{
float aver(float b[]);
float a[20]; int i;
for(i=0;i <20;i++)
scanf( "%f ",&a[i]);
printf( "\n The average is %f ",aver(a[i]));
}
float aver(float b[])
{
float sum=0.0,ave;
int i;
for(i=1;i <20;i++)
sum+=b[i];
ave=sum/20;
return(ave);
}
------解决方案--------------------
for(i=1;i <20;i++)//for(i=0;i <20;i++)
------解决方案--------------------
我汗..LZ
printf( "\n The average is %f ",aver(a[i])); 这句你传了一个什么给aver函数.,,只传了最后一个即,a[0]~a[19] 把他改成printf( "\n The average is %f ",aver(a));
------解决方案--------------------
main()
{
float aver(float b[]);
float a[20]; int i;
for(i=0;i <20;i++)
scanf( "%f ",&a[i]);
printf( "\n The average is %f ",aver(a[i])); // 改成 , aver(a);
}
float aver(float b[])
{
float sum=0.0,ave;
int i;
for(i=1;i <20;i++) // 改成i = 0
sum+=b[i];
ave=sum/20;
return(ave);
}
------解决方案--------------------
同意三楼的修改。
printf( "\n The average is %f ",aver(a[i]));
这条语句将导致错误。因为这个时候经过一个for()循环,i=20,而数组的范围是a[0]~a[19],并不存在a[20]!!
------解决方案--------------------
他是在做改错题好不好,这个又不是他自己写的代码,只是因为不熟练,没看出来而已
------解决方案--------------------
printf( "\n The average is %f ",aver(a[i]));
你的aver接受的参数是一个指针(或数组)
但是a[i]是一个浮点数啊!
------解决方案--------------------
float aver(float b[]);
这是函数声明怎么能写在main函数里面呢?然后你的函数调用呢
应该是 float avg; aver(float b);
还有数组是引用类型 传递的是它本身不需要返回值的
------解决方案--------------------
#include <stdio.h>
main()
{
float aver(float b[]);
float a[20];
int i;
for(i=0;i <20;i++)
scanf( "%f ",&a[i]);
printf( "\n The average is %f ",aver(a));
}
float aver(float b[])
{
float sum=0.0;
int i;
for(i=1;i <20;i++)
sum+=b[i];
float ave=sum/20;
return ave;
}
从键盘输入20个实型数,然后通过函数aver()求出它们的平均值,并将其返回。但程序中有几处错误,要求改错
题目给的代码为:
main()
{
int aver(float b[]);
float a[20],i;
for(i=0;i <20;i++)
scanf( "%f ",a[i]);
printf( "\n The average is %f ",aver(a[i]));
}
float aver(float b[])
{
float sum=0.0;
int i;
for(i=1;i <20;i++)
sum+=b[i];
ave=sum/20;
return;
}
我修改了一下``改成下面的代码``但还是不能编译成功``
main()
{
float aver(float b[]);
float a[20]; int i;
for(i=0;i <20;i++)
scanf( "%f ",&a[i]);
printf( "\n The average is %f ",aver(a[i]));
}
float aver(float b[])
{
float sum=0.0,ave;
int i;
for(i=1;i <20;i++)
sum+=b[i];
ave=sum/20;
return(ave);
}
------解决方案--------------------
for(i=1;i <20;i++)//for(i=0;i <20;i++)
------解决方案--------------------
我汗..LZ
printf( "\n The average is %f ",aver(a[i])); 这句你传了一个什么给aver函数.,,只传了最后一个即,a[0]~a[19] 把他改成printf( "\n The average is %f ",aver(a));
------解决方案--------------------
main()
{
float aver(float b[]);
float a[20]; int i;
for(i=0;i <20;i++)
scanf( "%f ",&a[i]);
printf( "\n The average is %f ",aver(a[i])); // 改成 , aver(a);
}
float aver(float b[])
{
float sum=0.0,ave;
int i;
for(i=1;i <20;i++) // 改成i = 0
sum+=b[i];
ave=sum/20;
return(ave);
}
------解决方案--------------------
同意三楼的修改。
printf( "\n The average is %f ",aver(a[i]));
这条语句将导致错误。因为这个时候经过一个for()循环,i=20,而数组的范围是a[0]~a[19],并不存在a[20]!!
------解决方案--------------------
他是在做改错题好不好,这个又不是他自己写的代码,只是因为不熟练,没看出来而已
------解决方案--------------------
printf( "\n The average is %f ",aver(a[i]));
你的aver接受的参数是一个指针(或数组)
但是a[i]是一个浮点数啊!
------解决方案--------------------
float aver(float b[]);
这是函数声明怎么能写在main函数里面呢?然后你的函数调用呢
应该是 float avg; aver(float b);
还有数组是引用类型 传递的是它本身不需要返回值的
------解决方案--------------------
#include <stdio.h>
main()
{
float aver(float b[]);
float a[20];
int i;
for(i=0;i <20;i++)
scanf( "%f ",&a[i]);
printf( "\n The average is %f ",aver(a));
}
float aver(float b[])
{
float sum=0.0;
int i;
for(i=1;i <20;i++)
sum+=b[i];
float ave=sum/20;
return ave;
}