Я не уверен, что отправленное вами изображение является результатом кода, который вы разместили выше. Мне пришлось изменить код, который вы разместили, чтобы получить такой вывод:
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 .
Если вы посмотрите на таблицу в этой ссылке, вы увидите, что ASCII-код для '0' равен 48. Когда Boardcounter равен 1, значение '0' + boardcounter
будет 49, что является кодом для 1. Как программа перемещается по циклу, '0' + boardcounter
перемещается к 50 (код для 2), 51 (код для 3) и так далее.
Когда счетчик достигнет 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);
, чтобы назначить символ массиву доски.