输入和打印2D阵列

时间:2017-02-11 02:24:26

标签: c arrays multidimensional-array

我刚刚开始深入研究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

2 个答案:

答案 0 :(得分: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而不是x  和column代替y

答案 1 :(得分:0)

你的节目非常好。它也以正确的顺序打印矩阵。但是,如果您只想以矩阵格式格式化输出,只需打印&#34; \ t&#34;和&#34; \ n&#34;分别在内圈和外圈之后。

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