为什么当x>3时输入a[i]无法计算出答案


#include<stdio.h>
int main(){
    int i,x,count=0;
    double a[i],average,sum=0;
    scanf("%d",&x);
    if(x>=0){
        if(x==0){
            printf("average = 0\n");
            printf("count = 0");
        }
        else{
            for(i=1;i<=x;i++){
                scanf("%lf",&a[i]);
                sum = sum + a[i];
                if(a[i]>=60){
                    count++;
                }
            }
            average = sum/x;
            printf("average = %.1lf\n",average);
            printf("count = %d",count);
        }
    }
    return 0;
}

int i,x,count=0;
double a[i],此时i没有赋值,数组a的大小未知,看编译器的处理。gcc会处理成a[0],因此后面的数组运算都不成立。
动态数组用malloc

int x
scanf("%d",&x);
double *a=(double *)malloc(sizeof(double)*x);
for(i=0;i<x;i++) //数组下标是0-(x-1)
  scanf("%lf",&a[i]);

好的谢谢您