笑年腼腆 发表于 2017-3-28 00:38:59

写一个average函数求平均数,想问错在哪

#include<stdio.h>
void ave(int a);
void main()
{
        int a={15,16,16,16,18,19,1,5,18,16};
        int f;
        f=ave(a);
        printf("%d",f);
}
void ave(int a)
{
        int temp;
        int i;
        temp=0;
        for(i=0;i<10;i++)
        {
                temp=temp+a;
        }
        return temp;
}

如题,刚学,不太了解错误在哪?请求帮助

lumber2388779 发表于 2017-3-28 08:54:49

本帖最后由 lumber2388779 于 2017-3-28 08:55 编辑

你定义完a之后,使用a是指a数组中第11个元素,因为C语言是从0开始索引的,所以你后边使用数组的时候a是溢出的
定义函数参数为数组的时候可以不用指定长度,如void ave(int a[]),调用的时候是将整个数组传进去的,如ave(a)
这块你可能学完指针后再回来理解好一点

泡泡北斗星 发表于 2017-3-28 09:09:54

首先,定义的函数有问题啊
既然都要返回int了,怎么还定义void呢,void表示没有返回值
还有第七行的代码,传数组进函数,直接上数组的名字就可以了,像这样f=ave(a);
还有一个最重要的问题,你这个代码是求和的啊,不是求平均数啊
{:10_256:}{:10_256:}{:10_256:}

machimilk 发表于 2017-3-28 11:56:36


#include<stdio.h>
int ave(int a);
void main()
{
        int a={15,16,16,16,18,19,1,5,18,16};
        int f;
        f=ave(a);//传数组变量首地址
        printf("%d",f);
}
int ave(int a)//要返回整数变量不能用void
{
        int temp;
        int i;
        temp=0;
        for(i=0;i<10;i++)
        {
                temp=temp+a;//数组里面10个元素求和
        }
        return temp/10;//求和后要除以10才是平均数
}
页: [1]
查看完整版本: 写一个average函数求平均数,想问错在哪