我刚刚开始深入研究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
答案 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");
}