【问题标题】:Making a simple checkerboard制作一个简单的棋盘
【发布时间】:2011-03-02 05:19:14
【问题描述】:

我需要帮助/提示在 C 中打印棋盘格。

我想像这样打印一个 4x4 棋盘:

+----+
|    |
|    |
|    |
+----+

当然,这只是 1x1,但我不知道如何制作 4x4。

我知道我必须使用某种嵌套的 for 循环来执行此操作。我还必须将它存储在一个数组中。我只有这个:

#include <stdio.h>
#include <string.h>

char board[4][4];

int main() {

    for (int i = 0; i < 4; i++) {
        for (j = 0; j < 4; j++) {
            board[i][j] = 
        }
    }

我不知道如何在 board[1][1] 中存储一个 1x1 盒子,然后再在 board[2][2] 中存储......你明白了......你们可以吗?帮我怎么做?

提前致谢!

【问题讨论】:

  • 您只是想打印出网格,还是将其与值一起存储?
  • @Rob 我想打印网格但也将其存储在数组中。这只是我正在开发的程序的一部分,所以如果我要实现控制台输入并输入 2,2 它应该转到 board[2][2] 你知道我的意思吗?
  • 您的数组是 [4][4] 但您将引用 0..4 中的 ij 值,这将使您超出数组边界,因此您将写入你不拥有的内存。
  • @fbrereto:好的,我通过编辑 for 循环来编辑代码。但我仍然需要弄清楚如何将该模式存储在数组中......
  • 您的问题主要是关于如何将棋盘状态存储在数组中,或者如何在 ASCII 艺术中打印棋盘?即使你需要同时做这两件事,一次只专注于一项任务。

标签: c for-loop


【解决方案1】:

考虑到对于每一行,您将打印+,然后为每列打印----+(或| 和空格):

+----+----+----+ ... ----+
|    |    |    | ...     |
.
.
.
|    |    |    | ...     |
+----+----+----+ ... ----+
|    |    |    | ...     |

等等。

还要考虑是否需要在数组中存储棋盘状态棋盘图。板状态将更容易分析(并且使用更少的内存)。当您需要“漂亮打印”板子时,您可以板子状态数组生成绘图。

【讨论】:

  • 哦,我想存储棋盘状态。这是因为如果用户输入 2,3,我希望它转到 board[2][3],然后可能会更改该特定框。
【解决方案2】:

板是这样的:

+---+---+
|   |   |
+---+---+
|   |   |

等等

我会先打印几个分隔元素:

while(i < n){
   printf("+---");
   i++;
}
printf("+\n");

比几个细胞:

while(i < n){
printf("| %c ", currcell);
   i++;
} 
printf("|\n")

char curcell 将是您的board[i],[j] - 默认情况下为空格。

对不起,如果看起来不够清楚,我对编程很陌生。

【讨论】:

    猜你喜欢
    • 2013-05-17
    • 2014-12-01
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    • 2020-01-10
    • 2013-06-28
    • 2017-04-27
    相关资源
    最近更新 更多