2012-02-27 211 views
1

我正在使用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; 
} 
+0

啊我明白了!我一直在看它很久,我沒有看到明顯的!非常感謝大家 – adohertyd 2012-02-27 22:02:48

回答

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

你遍歷錯誤的價值觀。

  • 數組從0開始,而不是1
  • 你停車時指數小於numarray[N]值(這只是在數組中的值,在這種情況下是不明確的,因爲它是一個數組結束後)。

我懷疑你想這樣做:

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

在這行代碼:

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

numarray[N]是未初始化變量,所以它有一個未知的值。它可能是零,也可能是60,000。

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

2

你是不是真的想讓你的for循環索引在numarray [N]而不是N上結束?