检查arrray并返回bool

时间:2018-03-20 22:42:06

标签: c function return boolean

我在CS课程中,我正在尝试创建一个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 个答案:

答案 0 :(得分:3)

如果您执行printf("%s", check_table_full?"true":"false");,则调用该函数。

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

答案 1 :(得分:0)

您可能希望使用嵌套的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
}

答案 2 :(得分:-1)

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

这是你滚动的方式 - &gt;

#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 ..用于投票。)

/ A