gpt4 book ai didi

c - 如何检测 X 的对角线数

转载 作者:行者123 更新时间:2023-11-30 21:28:34 24 4
gpt4 key购买 nike

我正在尝试编写一个程序,如果连续有 n 个 X 或 O,则该程序将调用函数 win。我对向上倾斜的对角线胜利感到困难。有人可以就我应该改变什么提供任何建议吗?提前致谢。它调用无限循环而不是返回 true。

bool left_diag_win(char **board, int num_rows, int num_cols) {
int i;

if (board[0][0] == '*') {
return false;
}

for (i = 1; i < num_rows; ++i) {
if (board[i][i] != board[0][0]) {
return false;
}
}
return true;
}

bool right_diag_win(char **board, int num_rows, int num_cols) {
int i;

if (board[0][num_cols - 1] == '*') {
return false;
}

for (i = 1; i < num_rows; ++i) {
if (board[i][num_cols - i - 1] != board[0][num_cols - 1]) {
return false;
}
}
return true;
}

最佳答案

您的代码似乎是正确的,但您可能在其他地方遇到问题。这是一个其行为符合预期的示例:

#include <stdbool.h>
#include <stdio.h>

bool left_diag_win(char **board, int num_rows, int num_cols) {
if (board[0][0] == '*') {
return false;
}
for (int i = 1; i < num_rows; ++i) {
if (board[i][i] != board[0][0]) {
return false;
}
}
return true;
}

bool right_diag_win(char **board, int num_rows, int num_cols) {
if (board[0][num_cols - 1] == '*') {
return false;
}
for (int i = 1; i < num_rows; ++i) {
if (board[i][num_cols - i - 1] != board[0][num_cols - 1]) {
return false;
}
}
return true;
}

int main(void) {
char *matrix1[] = { "X****", "*X***", "**X**", "***X*", "****X" };
char *matrix2[] = { "****X", "***X*", "**X**", "*X***", "X****" };

printf("matrix:\n");
for (int i = 0; i < 5; i++) {
printf("%s\n", matrix1[i]);
}
printf("left-diagonal: %d\n", left_diag_win(matrix1, 5, 5));
printf("right-diagonal: %d\n\n", right_diag_win(matrix1, 5, 5));

printf("matrix:\n");
for (int i = 0; i < 5; i++) {
printf("%s\n", matrix2[i]);
}
printf("left-diagonal: %d\n", left_diag_win(matrix2, 5, 5));
printf("right-diagonal: %d\n\n", right_diag_win(matrix2, 5, 5));

return 0;
}

输出:

matrix:
X****
*X***
**X**
***X*
****X
left-diagonal: 1
right-diagonal: 0

matrix:
****X
***X*
**X**
*X***
X****
left-diagonal: 0
right-diagonal: 1

关于c - 如何检测 X 的对角线数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40559126/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com