帮我看下为啥显示无效内存引用

img

double a[100000]数组太大了,把它放到main()主函数体外定义为全局变量。
题主可以不必用数组记录输入的数值,只用一个变量 a 就可以实现了,供参考:

#include<stdio.h>
int main()
{
    int     n = 0;
    double  a, ave = 0, sum = 0;
    scanf("%d", &n);
    for (int i = 1; i <= n; i++)
    {
        scanf("%lf", &a);
        sum += a;
    }
    ave = sum / n;
    printf("%f\n", ave);
    return 0;
}

scanf(“%f”,a[i])写的不对,应该是用a[i]的地址&,改成
scanf(“%f”,&a[i]);


#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <iostream>
int main()
{
    double sum = 0;
    int n = 0;
    int ave = 0;
    double a[100000] = { 0 };
    scanf("%d", &n);
    for (int i = 1; i <= n; i++)
    {
        scanf("%f", &a[i]);
        sum += a[i];
        ave = sum / i;
    }

    printf("%d", ave);
    system("pause");
    return 0;
}

太大了呗,一个double8字节,100000个就是八十万字节,栈上放不下
可以试着new一下,别忘了delete []