【发布时间】:2017-07-22 09:54:37
【问题描述】:
我正在尝试开发一个程序,其中用户输入大小为 nxn 的矩阵,其中 n 为 10 或更小,并且程序必须将其旋转 90、180、270 度等。用户将首先输入矩阵的大小(“输入 n:”),然后通过一次输入多个以空格分隔的数字来填充矩阵。所以程序会说“输入矩阵的第 0 行:”,用户输入“1 2 3”、“输入矩阵的第 1 行:”等等。
我的问题是,当我不知道n 将有多大直到用户输入它时,我如何编写一个程序,将整数扫描到nxn 多维数组中。我知道 scanf("%d %d %d", matrix[0][0], matrix [0][1], matrix[0][2]); 可以用于第一行,如果我事先知道它将是一个 3 x 3 矩阵或scanf("%d %d %d %d", matrix[0][0], matrix [0][1], matrix[0][2], matrix[0][3]); 用于 4 x 4 矩阵,但在这种情况下,我直到之后才知道 n编写代码并由用户输入。我现在能想到的只有:
printf("Enter n: ");
scanf("%d", &n);
if (n == 3){
printf("Enter row 0 of matrix: );
scanf("%d %d %d", matrix[0][0], matrix [0][1], matrix[0][2]);
printf("Enter row 1 of matrix: );
scanf("%d %d %d", matrix[1][0], matrix [1][1], matrix[1][2]);
printf("Enter row 2 of matrix: );
scanf("%d %d %d", matrix[2][0], matrix [2][1], matrix[2][2]);
// code to rotate 3x3 matrix
}
else if (n == 4){
printf("Enter row 0 of matrix: );
scanf("%d %d %d", matrix[0][0], matrix [0][1], matrix[0][2], matrix[0][3]);
printf("Enter row 1 of matrix: );
scanf("%d %d %d", matrix[1][0], matrix [1][1], matrix[1][2], matrix[1][3]);
printf("Enter row 2 of matrix: );
scanf("%d %d %d", matrix[2][0], matrix [2][1], matrix[2][2], matrix[2][3]);
printf("Enter row 3 of matrix: );
scanf("%d %d %d", matrix[3][0], matrix [3][1], matrix[3][2], matrix[3][3]);
// code to rotate 4x4 matrix
}
else if (n == 5) {
// and so on...
}
但是,我知道这需要很长时间。有没有人可以帮忙?谢谢!
【问题讨论】:
-
请阅读有关
for循环的内容 - 任何 C 编程书籍的第一章都有介绍 -
我想我必须使用 for 循环,但是我如何在不知道提前输入多少数字的情况下在一行中扫描多个数字?
-
重复调用
scanf- 即scanf(" %d", ....) -
或许也可以阅读
scanf的手册页 -
scanf工作时用户无需按回车