固定大小的阵列不固定
问题描述:
我正在使用SRand/Rand生成一个随机数组。数组大小取决于提示用户输入的数字。基本上,如果用户输入9的大小,则数组应该是9个数字。然后应该使用带有参数的rand()填充该数组,以保持数组值小于18.问题是,有时会生成随机大小的数组。也许每第四次或第五次运行该程序时,该数组可能是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;
}
答
for(i=1; i<numarray[N]; i++)
你遍历错误的价值观。
- 数组从0开始,而不是1
- 你停车时指数小于
numarray[N]
值(这只是在数组中的值,在这种情况下是不明确的,因为它是一个数组结束后)。
我怀疑你想这样做:
for(i = 0; i < N; i++)
答
在这行代码:
for(i=1; i<numarray[N]; i++)
numarray[N]
是未初始化变量,所以它有一个未知的值。它可能是零,也可能是60,000。
结果是您的循环运行了未知次数的迭代。
答
你是不是真的想让你的for循环索引在numarray [N]而不是N上结束?
啊我明白了!我一直在看它很久,我没有看到明显的!非常感谢大家 – adohertyd 2012-02-27 22:02:48