Код отлично работает для меня. Пожалуйста, перепроверьте его.
Возможно, вы вводите неверные данные. например, y вместо Y (чувствительно к регистру)
Чтобы гарантировать, что код работает независимо от регистра, вы можете изменить условие как
if (answer == 'Y' || answer == 'y')
{
startGame();
}
Более того, я предлагаю вам упростить условия из цикла do. например,
if (choice == 1 && square[1] == '1')
square[1] = mark;
следует заменить на
if (choice == 1)
square[1] = mark;
, то же самое для других условий, которые определяют, какую ячейку пометить. Почему? поскольку choice
является целым числом, проверка его на характер не требуется (на самом деле может вызывать ошибки из-за неявного приведения типов)