2017-02-11 12 views
-1

私は2D配列を掘り出し始めています。なぜ出力が次元行列ではなくデータ行を生成するのかといういくつかの問題があります。すべての助けに感謝します!ありがとうございました!!2D配列の入力と印刷

マイコード:

#include <stdio.h> 
#include <stdlib.h> 

int main() { 

int x, y, i, j; 
int m[10][10]; 


setvbuf(stdout, NULL, _IONBF, 0); 

while (1) { 
    printf("Number of rows? "); 
    scanf("%d", &x); 
    if (x == 0) 
     break; 
    printf("Number of columns? "); 
    scanf("%d", &y); 

    printf("Enter matrix values row by row: \n"); 
    for (i = 0; i < x; i++) { 
     for (j = 0; j < y; j++) { 
      scanf("%d", &(m[i][j])); 
     } 
    } 
printf("Matrix read:\n"); 
    for (i = 0; i < x; i++) { 
     for (j = 0; j < y; j++) { 
      printf("%d", m[i][j]); 
     } 
    } 

帰属データ:

Number of rows? 2 
Number of columns? 2 
Enter matrix values row by row: 
1 2 3 4 

出力:

Matrix read: 
1234 

答えて

1

あなたの現在のプログラム行を印刷している理由を理解するには、印刷ループを介して行きます値を印刷しているすべてのポイントを確認します。

印刷 "1"、印刷 "2"、印刷 "3"、印刷 "4":

は、あなたはそれがこのようなものになることがわかります。

だから、プログラムはそれだけです。これは、他の "書式設定"なしで数字を印刷します。リテラル「%d個」の数字の後にスペースがあります

printf("Matrix read:\n"); 
for (i = 0; i < x; i++) { 
    for (j = 0; j < y; j++) { 
     printf("%d ", m[i][j]); 
    } 
    printf("\n"); 
} 

お知らせ:

あなたはこのような何かを行うことができます。 そして、新しい行が内側のすべての後に印刷されることに注意してください。for loop(これは行に対応します)。

:よりわかりやすい名前を使用できます。たとえば、x およびcolumnの代わりに、yの代わりにrowを使用してください。

+0

ありがとうございました!本当に助けになりました – cat

0

プログラムは完璧です。マトリックスも正しい順序で印刷しています。しかし、単に出力をマトリックス形式で書式化したい場合は、それぞれ内側と外側のループの後に "\ t"と "\ n"を印刷してください。

for (i = 0; i < x; i++) { 
    for (j = 0; j < y; j++) { 
     printf("%d\t", m[i][j]); 
    } 
    printf("\n"); 
}