固定大小的阵列不固定

问题描述:

我正在使用SRand/Rand生成一个随机数组。数组大小取决于提示用户输入的数字。基本上,如果用户输入9的大小,则数组应该是9个数字。然后应该使用带有参数的rand()填充该数组,以保持数组值小于18.问题是,有时会生成随机大小的数组。也许每第四次或第五次运行该程序时,该数组可能是12-14个数字。我无法看到我的代码出现问题。我在下面包含了一个片段。任何人都会对此有所了解?固定大小的阵列不固定

int main(void) 
{ 
    int N; 
    int i; 

    printf("Please enter a number\n"); 
    scanf("%d", &N); 

    srand (time(NULL)); 
    int numarray[N]; 
    for(i=1; i<numarray[N]; i++) 
    { 
     numarray[i]=rand()%21; 
     printf("%d\n", numarray[i]); 
    } 

    return 0; 
} 
+0

啊我明白了!我一直在看它很久,我没有看到明显的!非常感谢大家 – adohertyd 2012-02-27 22:02:48

for(i=1; i<numarray[N]; i++) 

你遍历错误的价值观。

  • 数组从0开始,而不是1
  • 你停车时指数小于numarray[N]值(这只是在数组中的值,在这种情况下是不明确的,因为它是一个数组结束后)。

我怀疑你想这样做:

for(i = 0; i < N; i++) 

在这行代码:

for(i=1; i<numarray[N]; i++) 

numarray[N]是未初始化变量,所以它有一个未知的值。它可能是零,也可能是60,000。

结果是您的循环运行了未知次数的迭代。

你是不是真的想让你的for循环索引在numarray [N]而不是N上结束?