【问题标题】:Fixed size array not fixed固定大小的数组不固定
【发布时间】:2012-03-17 09:18:32
【问题描述】:

我正在使用 SRand/Rand 生成一个随机数数组。数组大小取决于提示用户输入的数字。基本上,如果用户输入的大小为 9,则数组应该是 9 个数字。然后应该使用带有参数的 rand() 填充该数组,以保持数组值小于 18。问题是,有时会生成随机大小的数组。也许每 4 次或 5 次运行程序,数组可能是 12-14 个数字。我看不出我的代码有问题。我在下面包含了一个 sn-p。有没有人解释一下?

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;
}

【问题讨论】:

  • 啊,我明白了!看了好久没看到明显的东西!非常感谢大家

标签: c arrays random


【解决方案1】:
for(i=1; i<numarray[N]; i++)

您正在循环错误的值。

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

我怀疑你想这样做:

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

【讨论】:

    【解决方案2】:

    在这行代码中:

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

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

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

    【讨论】:

      【解决方案3】:

      您的真正意思是让您的 for 循环索引在 numarray[N] 而不是 N 上终止?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-11-15
        • 1970-01-01
        • 1970-01-01
        • 2019-01-11
        • 2013-11-09
        • 1970-01-01
        • 2023-04-03
        相关资源
        最近更新 更多