为什么说明函数部分编译后会出错啊?我百思不得姐

问题遇到的现象和发生背景
1是正确的代码,图2是我自己打的,图2的sum没有说明等于a[0],且q1改成了0,编译以后也没问题,但是输出就会出错,如图3。为什么图12明明逻辑是一样的,编译也没报错,图2输出却出错了呢?
用代码块功能插入代码,请勿粘贴截图
//图1原代码:
#include
int main()
{
    float aver(float a[],int n);
    int i;
    float z1[5],z2[10];
    printf("yi:\n");
    for(i=0;i<=4;i++)
        scanf("%f",&z1[i]);
    printf("er:\n");
    for(i=0;i<=9;i++)
        scanf("%f",&z2[i]);
    printf("%f\n",aver(z1,5));
    printf("%f\n",aver(z2,10));
    return 0;
}
float aver(float a[],int n)
{
    int q;
    float sum=a[0],k;
    for(q=1;qreturn(k);
}


运行结果及报错内容

img

img

img

我想要达到的结果

原题是:有两个小组,分别有5名学生和10名学生,请编程输入这些学生的成绩,并调用一个aver函数来求这两个小组的平均分。

把函数放在main函数前面。

sum要初始化为0,不然sum是一个意想不到的值。
http://t.csdn.cn/1u02u
这是我的另一个回答,问题与你类似,回答较为详细。

可以在main函数前面进行函数声明