将随机数分配给2D数组时,嵌套的For-Loop永远不会结束。

时间:2016-12-30 18:57:22

标签: c arrays

我正在尝试使用C编写程序,该程序使用嵌套for循环中的随机数生成器生成给定街道上每个家庭中的人数。

这应该非常简单,但是当我尝试将数据分配到数组中的位置时,For-loop不会停止。如果我把这部分拿出来,for循环就会按照正常情况完成。

这个有效但不分配任何数据(我使用指针测试和测试2来检查循环是否已停止。):

// populating the streets with kids
// Streets then houses, we are assuming that each street is uniform in   number of houses
int KidsInStreet[9][24];
for(int o = 0; o <10; o++){
    printf("Testing %d\n", o);
    for(int j = 0; j < 25; j++){
        // assign randnumber between 0 and 5 for no of kids
        int r = rand() % 5;
        // KidsInStreet[o][j] = r;
        printf("Testing2 %d\n", j);
    }
}

当我尝试分配数据时,循环不会停止:

// populating the streets with kids
// Streets then houses, we are assuming that each street is uniform in number of houses
int KidsInStreet[9][24];
for(int o = 0; o <10; o++){
    printf("Testing %d\n", o);
    for(int j = 0; j < 25; j++){
        // assign randnumber between 0 and 5 for no of kids
        int r = rand() % 5;
        KidsInStreet[o][j] = r;
        printf("Testing2 %d\n", j);
    }
}

我不知道为什么会这样,因为它确实应该不是问题。 非常感谢你的任何反馈:)

1 个答案:

答案 0 :(得分:0)

正如@WeatherVane在评论中指出的那样,int KidsInStreet[9][24] 924是元素的数量。

将该行更改为int KidsInStreet[10][25];可解决问题:

#include "stdio.h"

int main(void) {
    // Disable stdout buffering
    setvbuf(stdout, NULL, _IONBF, 0);

    printf("Hello World\n");
    int KidsInStreet[10][25];
    for(int o = 0; o <10; o++){
        printf("Testing %d\n", o);
        for(int j = 0; j < 25; j++){
            // assign randnumber between 0 and 5 for no of kids
            int r = rand() % 5;
            KidsInStreet[o][j] = r;
            printf("Testing2 o%d j%d\n",o, j);
        }
    }
    return 0;
}

您可以在此处尝试代码:https://repl.it/EycD/1