固定大小的数组不固定

ado*_*tyd 1 c arrays random

我正在使用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;
}
Run Code Online (Sandbox Code Playgroud)

Rei*_*ica 5

for(i=1; i<numarray[N]; i++)
Run Code Online (Sandbox Code Playgroud)

你正在循环错误的值.

  • 数组从0开始,而不是1.
  • 当索引小于numarray[N](在数组中只是一个值,并且在这种情况下未定义,因为它是在数组结束之后的一个值)时,您将停止.

我怀疑你想这样做:

for(i = 0; i < N; i++)
Run Code Online (Sandbox Code Playgroud)