固定大小的数组不固定

时间:2012-02-27 21:49:45

标签: c arrays random

我使用SRand / Rand生成随机数组。数组大小取决于提示用户输入的数字。基本上,如果用户输入的大小为9,则数组应为9个数字。然后应使用带有参数的rand()填充此数组,以使数组值保持小于18.问题是,有时会生成随机大小的数组。也许每运行第4或第5次程序,阵列可能是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;
}

3 个答案:

答案 0 :(得分:5)

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

您正在循环错误的值。

  • 数组从0开始,而不是1。
  • 当索引小于numarray[N]的值时,你会停止(这只是数组中的一个值,在这种情况下是未定义的,因为它是在结束后的一个数组)。

我怀疑你想这样做:

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

答案 1 :(得分:4)

在这行代码中:

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

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

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

答案 2 :(得分:2)

你真的想让你的for循环索引终止于numarray [N]而不是N吗?