【问题标题】:2D Array not printing the correct output二维阵列未打印正确的输出
【发布时间】:2017-08-07 01:47:04
【问题描述】:

我正在尝试在 C 中初始化一个用 X 填充的二维数组,但索引 (2,2) 将用字母“C”填充。但是,当我运行下面的代码时,不仅在 (2,2) 处得到一个“C”,而且由于某种原因,我最终在索引 (1,9) 处得到一个“C”(见下面的输出)。

我尝试更改宽度和高度值并意识到它有时会起作用。例如,当我设置高度 = 10 和宽度 = 10 时,我得到了正确的输出,在其正确的插槽中只有一个“C”。

我对 C 编程很陌生,不知道为什么它有时会产生正确的输出。任何帮助将不胜感激!

int width = 10;
int height = 7;
int x = 2;
int y =2;
int limit = 3;

//initialising 2D array
char board[width][height];
for(int i = 0; i < height; i++){//rows
    for (int j = 0; j < width; j++){//cols
        if(i == y && j == x){
            board[y][x] = 'C';
        }
        else{
            board[i][j] = 'X';
        }
    }
}
//printing 2D array
for(int i = 0; i < height; i++){//rows
    for (int j = 0; j < width; j++){//cols
        printf("%c ", board[i][j]);
    }
    printf("\n");
}

【问题讨论】:

  • 既然是char的数组,你也可以这样:memset(board, 'X', width * height); board[y][x] = 'C';
  • 您是否只想在几个位置使用“C”而其余位置为“X”?如果是这样,memset () 可能会更好。使用它将所有值设置为“X”,然后使用条件将数组中的特定值设置为其他值。
  • 以后,总是复制粘贴输出作为文本。不要使用图像来显示文本。
  • 感谢专业提示。会试试的:)

标签: c arrays matrix multidimensional-array


【解决方案1】:

您的数组声明错误。 而不是

char board[width][height];

你需要

char board[height][width];
/*          Rows    Cols  */

【讨论】:

  • 啊,干杯,伙计。我知道我忽略了一些简单的事情。谢谢:)
猜你喜欢
  • 2016-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-04
  • 1970-01-01
  • 2021-07-12
  • 2020-08-07
  • 1970-01-01
相关资源
最近更新 更多