我使用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;
}
答案 0 :(得分:5)
for(i=1; i<numarray[N]; i++)
您正在循环错误的值。
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吗?