2015-06-02 63 views
-1

我開始使用C語言編程來製作一些簡單的程序,但是我遇到了特定代碼的問題。程序應該創建一個由3個元素組成的數組,從用戶處獲得輸入,並根據輸入更改一些數組元素。但我不知道爲什麼代碼跳轉第一個for循環。
這裏是一塊代碼:無法更改循環中的數組

int lock[3] = {3, 3, 3}, moves; 
char move; 

while (1) 
{ 
    scanf("%c", &move); 

    if (move == 'r' || move == 'R') 
    { 
     for (int i = 1; i == 2; i++) 
     { 
      lock[i]++; 
      if (lock[i] == 4) lock[i] = lock[i] % 3; 
     } 

     printf("Lock :"); 
     for (int j = 0; j < 3; j++) 
     { 
      if (j == 2) printf(" %d.\n", lock[2]); 
      else printf(" %d,", lock[j]); 
     } 

     moves++; 
    } 
} 

它的輸出是

Lock : 3, 3, 3. 

但它應該返回

Lock : 3, 1, 1. 

誰能告訴我這是怎麼回事?

回答

4

這個循環從不執行:

for (int i = 1; i == 2; i++) 

i的值開始於1,但對於循環繼續條件是i == 2,其評估爲假。

1
for (int i = 1; i <= 2; i++) 
+3

請避免代碼只回答 – P0W

1

==是你的等號運算符,所以它檢查我是否等於2在循環的開始。但是當你寫

for(i=1;i==2;i++) 

我被初始化爲1,所以我== 2是錯誤的。因此,該循環永遠不會executes.Try此代碼:

for(i=1;i<3;i++) 

它檢查是否i小於3,從而當i = 1且i = 2個的循環excecutes成功。

0

如果你希望你的循環是可執行的,你應該改變

測試條件i==2要麼i<=2i<3。你的問題將得到解決。正如我的值與1

0

初始化在第一個循環for

i==2將評估爲假,則條件i==2評估爲假,因爲的i的值是1。因此,第一for環被跳過。

根據您的要求,您應該將其更改爲for(int i=1; i<=2; i++)for(int i=1; i<2; i++)