如果不是多个则使用if语句

时间:2018-09-29 21:17:43

标签: c++ arrays if-statement

我想创建一个5x5的''数组,在中间用一个#号标签,而不是'',但是仅当用户输入'a'或'b'时才可以。在我标记为“正确的位置”的区域上,除非它只有“ a” /只有“ b”,否则它不会起作用,那么我该怎么办?预先谢谢你!

#include <iostream>

using namespace std;

int main()
{


while (true){

///Variables:

char array[4][4]; //Playing field 5x5
char direc; //Direction player moves




for (int x = 0; x <=4; x++){

    for (int y = 0; y <= 4; y++){

        array[x][y] = '_';
    if (direc != 'a' || 'b'){ ///RIGHT HERE!
        array[2][2] = '#';
    }

        cout << array[x][y]; //Starts printing Board

        if (y == 4){
        cout << endl; //Cuts to next line on print if 4 in a column row
    }

}
}

cin >> direc;
cin.get();




}

}

3 个答案:

答案 0 :(得分:1)

没有检查语句或程序其他部分所需的逻辑,但标记的语句应写为

(direc != 'a' || direct != 'b')

您的语句(direc != 'a' || 'b')将始终为true,因为作为逻辑或运算符'b'的第二个操作数的||是大于0的整数(表示字符b (以某种编码)),因此被视为true

答案 1 :(得分:0)

正如Neil在评论中提到的那样,您的5x5字段实际上是4x4,因此您只能访问array [0] [0]到array [3] [3],而您的X和Y为4一点。您应该改用以下方法:

char array[5][5]

以便您可以访问数组直到索引4

答案 2 :(得分:0)

希望对您有帮助

#include <iostream>

using namespace std;

int main()
{
   ///Variables:

char array[5][5]; //Playing field 5x5
char direc; //Direction player moves
char player;

while (true) {

    //get direc
    cin >> direc;
    cout << direc << "\n";
    if (direc == 'a' || direc == 'b') { ///RIGHT HERE!
        player = '_';
    }
    else {
        player = '#';
    }

    for (int x = 0; x <= 4; x++) {

        for (int y = 0; y <= 4; y++) {
            array[x][y] = '_';
            if (x == 2 && y == 2) {
                array[x][y] = player;
            }
            cout << array[x][y]; //Starts printing Board
            if (y == 4) {
                cout << endl; //Cuts to next line on print if 4 in a column row
            }

        }
    }

}

}