c语言编程:用数组名作函数参数,编写一个对一维数组求平均值的函数,并在主函数中调用它

#include<stdio.h>
void main()
{
float a[50];
int i,n=0;
for(i=0;getchar()!='\n';i++)
{
scanf("%f",&a[i]);
n++;
}
printf("平均值是:%f",b(a[50],n) );
}
float b(float arr[],int n)
{
float sum=0,c;
int i;
if(n==0)
return(0);
for(i=0;i<n;i++)
{
sum+=arr[i];
}
c=sum/n;
return(c);
}
这样为什么不行····

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

float b(float arr[],int n); //<<<<少了函数声明
void main()
{
float a[50];
int i,n=0;
for(i=0;getchar()!='\n';i++)
{
scanf("%f",&a[i]);
n++;
}
printf("平均值是:%f",b(a,n) ); //<<<<b这个函数传的是数组的首地址
}
float b(float arr[],int n)
{
float sum=0,c;
int i;
if(n==0)
return(0);
for(i=0;i<n;i++)
{
sum+=arr[i];
}
c=sum/n;
return(c);
}追问

嗯 很详细 谢谢啦。。还想问下 为什么输入1 2 3 4 5 输出是3.500000呢?

追答

for(i=0;getchar()!='\n';i++) //这个循环有点问题。
{
scanf("%f",&a[i]);
n++;
}
改成:
for(i=0;;i++) //因为getchar它会获取你的输入字符,试想一下,你输入的第一个数是1被它拿走了,
{ //下面的scanf就获取不到1了。
scanf("%f",&a[i]);
n++;
if(getchar()=='\n') break;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-17
函数在前面没有声明。
第二行应加上 float b(float arr[],int n);