簡體   English   中英

固定大小的數組不固定

[英]Fixed size array not fixed

我正在使用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;
}
for(i=1; i<numarray[N]; i++)

您正在遍歷錯誤的值。

  • 數組從0開始,而不是1。
  • 當索引小於numarray[N]的值(這只是數組中的值,並且在這種情況下是未定義的,因為它在數組末尾為1)時,您將停止。

我懷疑您想這樣做:

for(i = 0; i < N; i++)

在這行代碼中:

for(i=1; i<numarray[N]; i++)

numarray[N]是未初始化的變量,因此它具有未知值。 它可以是零,也可以是60,000。

結果是您的循環運行的迭代次數未知。

您實際上是要讓for循環索引終止於numarray [N]而不是N嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM