在 C 中计算超过 4 个元素的数组的平均值时出错

Getting Error While Calculating Average in Array More Than 4 Elements in C

我用 C 语言编写了以下程序。直到第 4 个程序都可以正常工作,如果您向前键入第 5 个程序,我会收到分段错误:11 错误?为什么?我找不到错误在哪里。谢谢。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{ 
  srand(time(NULL));
  
  int sum, i, input;
  int array [input];
  float average;
  sum = average = 0;
  int size = sizeof (array) / sizeof(array[0]);

  printf("Type the value of your array : ");
  scanf("%d", &input);

  printf("The size of your array is : %.2d \n", input);

  for (i = 0; i < input; i++)
  {
    array[i] = rand() % 100 + 1;
  }

  // loop for printing results

  for (i = 0; i < input; i++)
  {
    printf("Element %d; %d \n", i, array[i]);
  }
 
  for(i = 0; i < input; i ++){
    sum = sum + array[i];
  }

  average = (float)sum / i;
  printf("The average of array values is %.2f \n", average);
  
  
  return 0;
  };  

代码缺陷:

  1. 使用未初始化的变量input来初始化一个数组。

  2. 试图获取先前错误确定的数组的大小。

  3. 变量size在整个程序中从未使用过(冗余声明)。​​

注:我将使用-std=c99(C99标准)

gcc -std=c99 -o main main.c; ./main

代码重新定义(阅读添加的评论以解决问题):

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void) {
    srand(time(NULL));

    int sum, i, input;
    float average;
    sum = average = 0;

    printf("Type the value of your array : ");
    scanf("%d", &input);

    int array[input]; // placing after defining of 'input'
    // int size = sizeof(array) / sizeof(array[0]); // unused variable

    printf("The size of your array is : %.2d \n", input);

    for (i = 0; i < input; i++)
        array[i] = rand() % 100 + 1;

    // loop for printing results

    for (i = 0; i < input; i++) {
        printf("Element %d; %d \n", i, array[i]);
        sum += array[i];
    }

    average = (float) sum / i;

    printf("The average of array values is %.2f \n", average);

    return 0;
};

这将输出:

Type the value of your array : 10 
The size of your array is : 10 
Element 0; 6
Element 1; 14
Element 2; 66
Element 3; 73
Element 4; 19
Element 5; 14
Element 6; 62
Element 7; 78
Element 8; 31
Element 9; 31
The average of array values is 39.40