【发布时间】:2016-02-18 18:08:12
【问题描述】:
我正在尝试创建许多由随机数和随机大小组成的数组,例如 1 到 20 个元素。我的代码有时会起作用。
我正在使用我想要的范围之间的随机数来确定数组大小。如果第一次迭代产生一个值为 10 的数组大小,那么由于某种原因,我的代码不想创建任何大小大于 10 的数组。将创建各种数组(并将输出这些数组的列表),直到某个迭代会产生一个大于 10 的随机数。然后我得到这个错误:
数组索引超出范围 numbers->[11] 有效到 numbers[9]
“数字”是数组的名称。这是我的代码的相关部分:
srand(time(0));
int j, flag = 0;
int temp;
int rand=1;
for(int t=0; t<50; t++)
{
int length = rand()% 20 + 1;
cout<<"length is " << length << endl;
int numbers[length];
for(int i = 0; i < length; i++)
{
numbers[i]=rand();
cout << numbers[i] << endl;
}
for(j=0; (j<=length); j++)
{
for (int i=0; i<(length-1); i++)
{
if(numbers[i+1]<numbers[i])
{
temp=numbers[i];
numbers[i]=numbers[i+1];
numbers[i+1]=temp;
flag++;
}
}
}
cout << "Number of Swaps : " << flag << endl;
}
【问题讨论】:
-
我假设它与数组长度不更新有关?
-
代码看起来不错,我没有发现任何可疑之处。
-
另外,我无法在我的计算机上重现该问题。它是实际代码,还是只是它的简化版本?贴出实际代码。
-
int numbers[length]是非标准的。不过,如果这会导致这个问题,我会想办法。最后一个循环中的is 在你的程序中都不是秘密的js,是吗? -
这不可能是您正在运行的确切代码,它在第二个
for上缺少右括号,并且此定义int rand=1;会在您尝试调用时导致编译错误rand()函数。