2014-02-20 66 views
1
int main() { 
    char gameArea[][8] = { 
     {'X','X','X','X','X','X','X','X'}, 
     {'X','X','X','X','X','X','X','X'}, 
     {'X','X','X','X','X','X','X','X'}, 
     {'X','X','X','X','X','X','X','X'}, 
     {'X','X','X','X','X','X','X','X'}, 
     {'X','X','X','X','X','X','X','X'}, 
     {'X','X','X','X','X','X','X','X'}, 
     {'X','X','X','X','X','X','X','X'}}; 
    int i = 0; int j = 0; 
    while (i<8) { 
     while (j<8) { 
      printf("%c",gameArea[i][j]); 
      j++; 
     } 
     i++; 
    } 
    return 0; 
} 

輸出:如何在C中用x矩陣打印x?

XXXXXXXX 
Process returned 0 (0x0) execution time : 0.563 s 
Press any key to continue. 

從理論上講,i將通過列運行,並且打印所有的,但是這並沒有發生。我非常感謝你的幫助。

回答

7

我想你想一個for循環:

for (int i = 0; i < 8; ++i) { 
    for (int j = 0; j < 8; ++j) { 
     printf("%c", gameArea[i][j]); 
    } 
    printf("\n"); 
} 

這是你的循環的進展:

  • i = 0j = 0,打印X和增量j
  • ...
  • i = 0j = 7,打印X和增量j
  • 由於j = 8,請停止j -loop並增加i
  • i = 1j仍然是8,因爲我們不能執行j -loop,所以增加i
  • ...
  • i = 7j仍然是8因爲我們不能進行j -loop,所以增加i
  • Now i = 8 so stop i -loop。當你增加i你也想重置j0j -loop後

你想要做的是什麼。除此之外,你還想爲下一行打印一個新行,否則你將以64個連續的X秒結束。

使用一個for循環:

for (/*initialization*/; /*condition*/; /*increment*/) { 
    /*loop body*/ 
} 

是短切與一個while循環這樣做:

/*initialization*/ 
while(/*condition*/) { 
    /*loop body*/ 
    /*increment*/ 
} 
+1

使用for循環+1! :-) – Mithrandir

3

你需要每個內環

printf("%c",gameArea[i][j]); 
    j++; 
} 
j = 0; 
i++; 

for環是更適合你的任務之後的J個回零,在其他的答案說。

+0

在這種情況下''for'循環會更好。 – parrowdice

+0

我同意課程。 – Dabo

1

j計數器需要在每次開始時被初始化我循環。

發生了什麼是j循環了一次,最後j是8,所以j循環只迭代一次。

while (i<8) { 
    int j = 0; 
    while (j<8) { 
     printf("%c",gameArea[i][j]); 
     j++; 
    } 
    i++; 
} 
1

您需要在第一個while循環的開始重置j爲0,因此,在每次迭代中,您仍然可以通過內部一個循環。否則,一旦j等於8,內循環將不會再輸入。

1

插入j=0

while (i<8) { 
j = 0; 
while (j<8) { 
     printf("%c",gameArea[i][j]); 
     j++; 
    } 
i++; 
} 

沒有它,你的內循環將只執行一次,因爲j後第一次運行從不改變和循環條件不是又見面了。

正如其他用戶所建議的,您可能想要使用for循環。

1
int i = 0; int j = 0; 
while (i<8) { 
    while (j<8) { 
     printf("%c",gameArea[i][j]); 
     j++; 
    } 
    i++; 
    printf("\n") 
} 
2

第一while (j<8)循環後,沒有復位j爲0,類似地對於i,所以循環只運行一次,因此,只有一行被打印。

考慮使用for循環:

for (int i = 0; i < 8; i++)

而且,你嘗試調試代碼,即設置斷點,並通過執行步進?