【问题标题】:Why The 2D Matrix does not print the same input values?为什么二维矩阵不打印相同的输入值?
【发布时间】:2016-07-01 08:35:24
【问题描述】:

下面是我试过的程序。

我得到二维数组并在扫描完所有元素后打印该数组 如下所示

int main(void) {
    puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */
    int R, C;
    scanf("%d %d", &R, &C);
    int i[C][R];

    for (int row = 0; row < R; row++) {
        for (int column = 0; column < C; column++) {
            int val = 0;
            scanf("%d", &val);
            i[row][column] = val;
        }
    }

    for (int row = 0; row < R; row++) {
        for (int column = 0; column < C; column++) {
            printf("%d \t", i[row][column]);
        }
        printf("\n");
    }
    printf("RotatedMatrix\n");
    return EXIT_SUCCESS;
}

我将输入作为 3,4 表示 3 行 4 列,因此总共 12 个元素

我给矩阵从 1 到 12 的输入

但输出矩阵如下所示

1   2   3   5   
5   6   7   9   
9   10  11  12

代替

1   2   3   4   
5   6   7   8   
9   10  11  12

最后一列的元素像上面一样改变

我无法弄清楚我错过了什么。如果我得到任何帮助会很有帮助

【问题讨论】:

  • scanf("%d %d %d",&amp;R,&amp;C); int i[C][R]; --> scanf("%d %d", &amp;R,&amp;C); int i[R][C];
  • 查看声明,以及如何使用CR。然后看看你在哪里使用数组,以及如何使用行和列。将声明与用法进行比较。
  • 在询问有关运行时问题的问题时,发布干净编译的代码,包括#include 语句,否则我们只是猜测实际代码实际包含哪些头文件
  • 当询问用户某些特定的输入时,总是提示用户,以便他们知道预期的内容。否则此代码输出“!!!Hello Worldl!!!”然后让用户盯着那个文本和一个闪烁的光标,并且没有指示他们接下来要做什么,
  • 关于您问题中的此语句:“输入为 3,4” 对scanf() 的调用没有提供逗号,,因此不会输入这两个值。建议不要用空格分隔值。

标签: c matrix


【解决方案1】:

应该是

int i[R][C];

而不是

int i[C][R];

【讨论】: