我正在尝试使用井字游戏创建4x4电路板,这是我正在使用的功能。此功能将板重置为默认值,必须像这样 default
void resetBoard(char board[4][4])
{
for (int i = 0; i < 4; i++)
{
int boardcounter = 1;
for (int j = 0; j < 4; j++)
{
board[i][j] = '0' + boardcounter;
boardcounter++;
}
}
}
为此,我得到了答案current output 如果这样写
for (int j = 0; j < 3; j++)
{
board[i][j] = (char) boardcounter;
boardcounter++;
}
董事会被搞砸了,我该如何更改,以便该人可以输入代表董事会中10-16的字符A,...,G。
答案 0 :(得分:0)
void resetBoard(char board[4][4])
{
for (int i = 0; i < 4; i++)
{
int boardcounter = 1;
for (int j = 0; j < 4; j++)
{
char offset = '0';
if( boardcounter > 9 )
{
offset = 'A' - 10;
}
board[i][j] = offset + boardcounter;
boardcounter++;
}
}
}
答案 1 :(得分:0)
我不确定您发布的图片是您上面发布的代码的输出。我必须更改您发布的代码才能获得该输出:
void resetBoard(char board[4][4])
{
int boardcounter = 1;
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
board[i][j] = '0' + boardcounter;
boardcounter++;
}
}
}
如果不清楚更改是什么,我将int boardcounter = 1;
行移到了循环之外。
此代码产生您发布的图像中显示的输出的原因与ASCII编码系统有关。
如果您查看该链接中的表,则可以看到'0'的ASCII码为48。当boardcounter为1时,'0' + boardcounter
的值将为49,即1的代码。程序在循环中移动,'0' + boardcounter
移至50(2的代码),51(3的代码),依此类推。
当boardcounter达到10时,'0' + boardcounter
将为58,这是:的代码。这就是为什么您在发布的图像中看到该符号的原因。董事会人数分别为11、12、13、14、15和16时,也会有类似的说明。
因此,既然已经解释了输出奇怪的原因,那么问题是如何获得所需的输出。一种方法是使用if语句检查boardcounter是在1到9之间还是在10到16之间。如果它在1到9之间,则可以使用发布的代码。如果boardcounter在10到16之间,则可能需要使用board[i][j] = 'A' + (boardcounter-10);
之类的行来将字符分配给board数组。