【发布时间】: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