【问题标题】:How do I print a board with letters on it如何打印带有字母的板
【发布时间】:2015-10-27 00:21:39
【问题描述】:

我有一个二维数组,我在其中询问用户它的尺寸,例如4x4。然后我想打印 ABCD 来标记行和 ABCD 垂直标记列。

我正在尝试这样做,但不确定如何正确循环。

void printBoard (char board[26][26], int size);

int main(int argc, char** argv) {

int size; //board size is even and not exceeding 26

printf("Enter the board dimension: ");
scanf("%d", &size);

char boardgame[size][size];
printBoard (boardgame, size);

return (EXIT_SUCCESS);
}

void printBoard (char board [26][26], int size) {

for (int row = 0; row < size; row++) {
    for (int col = 0; col < size; size++) {
        printf("%c", board['A'+ row]['A'+ col]);
    }
}

}

【问题讨论】:

  • 为什么要计算这个指数'A'+ row
  • 那我如何增加字母呢?像 A B C D
  • 你没有增加任何字母,这些字母是数组的索引,它们非常有界限。

标签: c arrays multidimensional-array


【解决方案1】:

你不能像这样使用字母作为数组索引。 'A' + 行将不起作用。 'A' 是一个 ASCII 码是 65 的字符,所以你说的是 65+row。

其次,

printf("%c", board['A'+ row]['A'+ col]); 

就标记行和列而言,什么也没做。在这里,您试图打印出数组本身的内容。我假设您希望在顶部有一行来标记列,并在侧面有一列来标记行,如果是这种情况,您正在执行太多的打印语句。

此外,在增加字母时,您应该了解 ASCII。 http://www.asciitable.com/

如您所见,65 是大写字母 A 的 ASCII。

#include <stdio.h>

int main(void) {
    printf("%c",65);
    return 0;
}

此代码将打印出一个 A。我认为这可能会引发有关如何解决字母递增问题的想法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-05
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    • 2021-08-07
    相关资源
    最近更新 更多