2017-02-11 184 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"); 
}