C语言求平均值的问题,我知道我的程序有错,但是那个错误的结果怎么来的我想不通~

#include

int main()
{
int numbers[5];
unsigned int count = 5;
long sum=0l;
float average = 0.0f;

printf("\nEnter your Numbers:\n");
for (unsigned int i = 0; i < count; i++)
{
    printf("%2u>><<", i+1);
    scanf("%d", numbers);
    sum += numbers[i];
}
average = (float)sum / count;
printf("平均数是:%2f\n", average);

}

这是一个程序,我知道是错误的,我想知道的是为什么我输入五个25,然后得到的结果会是:171798688.000000这个数,这个数怎么来的。。
如图:
图片说明

首先要看楼主用的什么IDE(我这里以VS为例)
楼主加一句打印printf("%d %d\n", sum, numbers[i]);就知道为什么了
你的int没有初始化过,所以默认栈上的值是0xcccccccc (即-858993460)
当相加3次后,int会发生溢出所以从负数又变成了正数
图片说明

 #include <stdio.h>

int main()
{
    int numbers[5];
    unsigned int count = 5;
    long  sum = 0l;
    float average = 0.0f;

    printf("\nEnter your Numbers:\n");
    for (unsigned int i = 0; i < count; i++)
    {
        printf("%2u>><<", i + 1);
        scanf("%d", numbers);
        sum += numbers[i];
        printf("%d %d\n", sum, numbers[i]);
    }
    average = (float)sum / count;
    printf("平均数是:%2f\n", average);
}

scanf("%d",&numbers[i]);

最简单的方法是在每次输入值后,就输出一次numbers[i]的值或者你想了解的其它变量的值,一点一点验证