2016-12-04 60 views
0

因此,我試圖在C中使用rand()命令,在這種情況下生成1到6之間的隨機數。該部分完美,但後來我試圖使用開關方法來計數每個數字有多少次出現,結果是......很奇怪。C switch case REALY奇怪的結果

繼承人的代碼:

包括

int main() { 

    int num; 
    int number; 
    int one; 
    int two; 
    int three; 
    int four; 
    int five; 
    int six; 

    printf("enter a number: "); 
    scanf("%d", &num); 
    for(int n = 1; n < num + 1; n++){ 
     number = (rand() % 6) +1; 
     printf("%d", number); 
     switch(number){ 
      case 1: 
       one++; 
       break; 
      case 2: 
       two++; 
       break; 
      case 3: 
       three++; 
       break; 
      case 4: 
       four++; 
       break; 
      case 5: 
       five++; 
       break; 
      case 6: 
       six++; 
       break; 
     } 
    } 
    printf("number of ones: %d\n" 
      "number of twos: %d\n" 
      "number of threes: %d\n" 
      "number of fours: %d\n" 
      "number of fives: %d\n" 
      "number of sixes: %d\n", 
      one, two, three, four, five, six); 
    return 0; 
} 

,當我跑,並在10中寫道,10個隨機數字真的apeared,但這些都是結果:

個1:1978168284

二元數:-2

三元數: 1307605979

數四肢的:1978192464

數擊掌的:6422480

數亂七八糟的:6422299

我看着代碼幾次,我只是不知道怎麼說happend。 ..如果有人有fixisg的設備,請告訴我(:

+6

初始化您的變量。 –

+0

...意義設置'一=二= = =六= 0;'在循環之前。 C不適合你。 – Gene

回答

1

具有自動存儲時間的變量不會初始化爲零。

你需要自己做。

讀取未初始化變量的行爲在C中是未定義的:您必須初始化它們。

+0

謝謝(:解決了它 –