2017-02-11 113 views
-1

我剛開始深入探討二維數組,我遇到了一些問題,爲什麼我的輸出產生的是一行數據而不是維數矩陣。所有幫助表示讚賞!謝謝!!輸入和打印二維數組

我的代碼:

#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」。

所以,程序就是這樣做的。它在沒有任何其他「格式化」的情況下打印數字。

你可以做這樣的事情:

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

公告有字面「%d」,數字後面輸入一個空格。 然後,請注意在每個內部for loop(對應於一行)後都會打印一個新行。

注意:您可能想要使用更多的描述性名稱。例如:row而不是xcolumn而不是y

+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"); 
}