我正在尝试使用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);
}
}
我不知道为什么会这样,因为它确实应该不是问题。 非常感谢你的任何反馈:)
答案 0 :(得分:0)
正如@WeatherVane在评论中指出的那样,int KidsInStreet[9][24]
9
和24
是元素的数量。
将该行更改为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