【发布时间】:2020-07-04 19:25:48
【问题描述】:
我在 C 中执行了以下程序。它在 4 号之前都可以正常工作,如果您向前键入 5 号,我会收到 Segmentation fault: 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;
};
【问题讨论】:
-
您是否使用 C99 规范进行编译?
-
C99 规范是什么意思?
-
你是如何编译你的程序的?如果您使用的是命令行,您可以显示您的编译命令吗?
-
int input; int array[input];是哦,大错特错! -
@DanielWalker pmg 是正确的。在 c99 中,您可以拥有变量数组,如链接所示。但是,在这种情况下,“输入”尚未初始化为任何内容。这很糟糕......