首页 文章

检查arrray并返回bool

提问于
浏览
0

我'm in a CS class and I' m试图创建一个tic tac toe程序 . 这是我第一次使用函数,我需要帮助检查一个二维数组,以查看它是否已满'x'或'o' . 我初始化为'_'的所有元素开始,我想要一个返回值为true或false,所以我使用 #include <stdbool.h> . 这是功能:

bool check_table_full(char board[SIZE][SIZE]){

    if(board[0][0] == '_'){
       return false;
    }else if(board[1][0] == '_'){
       return false;
    }else if(board[2][0] == '_'){
       return false;
    }else if(board[0][1] == '_'){
       return false;
    }else if(board[1][1] == '_'){
       return false;
    }else if(board[2][1] == '_'){
       return false;
    }else if(board[0][2] == '_'){
       return false;
    }else if(board[1][2] == '_'){
       return false;
    }else if(board[2][2] == '_'){
       return false;
    }else{
        return true;
}

我知道有一个更好的优化,然后使用if else语句,但这只是在我脑中很简单 . 我使用 printf("%s", check_table_full?"true":"false"); 来检查它是否应该返回false,因为数组中的所有元素都是'_' . 无论我做什么,它打印都是真的,如果我在printf语句中更改"true",它会打印第一个引号内的任何内容 .

其他所有工作都像SIZE定义,数组定义,我只是不能让这个函数返回false .

对不起,如果这很长,这是我第一次在这里问一个问题 .

3 回答

  • -1

    If 你做 printf("%s", check_table_full?"true":"false"); ,你没有调用这个函数 .

    check_table_full 是该函数的地址 . 你想 check_table_full()

  • 3

    您可能希望使用嵌套的for循环 . 我已经学习了C语法而不是C语法,所以语法可能有些偏差 . 示例代码...

    #include <stdio.h>
    int main() {
        char board[2][2];
        int outer_count, inner_count;
        //It will use nested for loops
        for (outer_count = 0; outer_count <= 2; count++) {
            for (inner_count = 0; inner_count <= 2; count ++) {
                if (board[outer_count][inner_count] == '_'){
                    return false;
                }
            }
        }
        return True
    }
    
  • 0

    遍历矩阵的方法不可扩展,您可以轻松引入错误并且不必要复杂 . 对于任何矩阵大小,我的'检查方法'是2行代码 .

    这就是你滚动的方式 - >

    #include <stdio.h>
    #include <stdbool.h>
    #define MXSIZE 3
    bool is_full(char *block) {
        for (int l=0;l<MXSIZE*MXSIZE;l++)if(*(block+l)=='_')return false;
        return true;
    }
    int main() {
        char my2DArray[MXSIZE][MXSIZE]={{'O','O','O'},{'O','O','O'},{'O','O','_'}};
        printf("%s",is_full(&my2DArray[0][0])?"The array is full\n":"The array is not full\n");
        return 0;
    }
    

    (LOL ..用于投票 . )

    /一个

相关问题