我在使用逻辑运算符时需要有关此C ++是/否问题的帮助

时间:2018-10-07 00:44:37

标签: c++ xcode operators

问题是:编写一个程序,打印问题“您是否要继续?”并读取输入。如果用户输入为“是”,“是”,“是”,则打印出“继续”。如果用户输入是“ N”或“否”,则“否”然后打印出“退出”。否则,打印“输入错误”。使用逻辑运算符。

到目前为止,这是我编写的所有代码。我知道它还不完整,而且我不知道我还需要添加到代码中。

#include <iostream>

using namespace std;

int main() {

    char response;

    cout << "Do you wish to continue?" ;
    cin >> response;

    if (response == 'Y'){
        cout << "Continuing";
    }

    else if (response == 'N'){
        cout << "Quit";
    }
    else if (response != 'N' || 'Y'){
        cout << "Bad input";
    }

    return 0;
}

更新:所以我编辑了代码,但仍然给我很多错误。这让我沮丧。请记住,我是一个初学者,我们还没有学习循环。抱歉头疼!

#include <iostream>
#include <string>
using namespace std;

int main() {

    char response;
    string help;



    cout << "Do you wish to continue?" ;
    cin >> response, help;


    if (response == 'Y' || help == "Yes" || help == "YES"){

        cout << "Continuing";

    }

    else if (response == 'N' || help == "No" || help == "NO"){
        cout << "Quit";
    }
    else if (response != 'N' || response != 'Y' || help != "Yes" || help != "YES" || help != "No" || help != "NO"){
        cout << "Bad input";
    }

    return 0;
}

3 个答案:

答案 0 :(得分:1)

首先,我认为这是一个不错的开始。听起来您是C ++的新手,所以这里有一些建议:

1)您的响应变量只能包含一个字符。我建议包括字符串并更改响应,以从用户那里获取“ Y”,“是”等字符串。

2)我建议将代码包装在带有退出条件的while循环中。

3)每个逻辑分支都应包含一个返回整数。如果满足逻辑条件,这将为程序提供退出条件。

我知道我还没有完全给你答案。如果您确实陷入困境,请回复,我们可以逐步解决。

答案 1 :(得分:0)

一种简单的方法是将用户的答案简单地转换为大写或小写。这样,您可以简单地使用小写字母。 对于循环,您可以例如使用“ do..while”。

#include <iostream>
#include <string>
using namespace std;

int main() {
    int stop = 0;
    string response;

    //Continue until the user choose to stop.
    do{
        //-------------
        // Execute your program
        //-------------
        cout << "Do you wish to continue? ";
        cin >> response;

        //-------------
        //Convert to lower case
        for (string::size_type i=0; i < response.length(); ++i){
            response[i] = tolower(response[i]);
        }
        //-------------
        //Check the answer of the user.
        if (response.compare("y") == 0 || response.compare("yes") == 0){
            cout << "Continuing \n";
        }
        else if (response.compare("n") == 0 || response.compare("no") == 0){
            cout << "Quit \n";
            stop = 1;
        }
        else{
            cout << "Bad input \n";
        }

    }while(stop == 0);

    return 0;
}

答案 2 :(得分:0)

就像您在问题中所说的那样,我们关心Y,Yes,YES,N,No和NO。除此之外,我们需要打印“错误输入”。考虑一下您将如何存储这些响应(提示:Sam Varshavchik的答案)。

一旦您已经完成了提取用户输入的工作,就需要检查用户实际输入的内容并进行相应的操作。从您的问题看来,“否则”可能会。您需要更改“ if else ifs”的条件,因为 对于一种类型的响应,您有3个条件:Y,Yes和YES需要一个输出-“继续”,而N,No和NO需要一个不同的输出-“ Quit”,而对于其他所有输出,我们将输出“ Bad输入”。考虑一下您的条件应该是什么,您的if语句应该类似于:

    if (response == "Y" || response == "Yes" || response == "YES")

,然后相应地处理此案。您希望对No条件执行相同的操作,最后对所有其他条件进行处理。我建议您使用如下代码:

    if( conditionals for Yes){
      //Code for Yes input
    }

    else if( conditionals for No){
      //Code for No input
    }

    else{
      //Code for all other inputs
    }

很想为您提供完整的答案,但是考虑一下程序如何从那里流向并继续进行,您已经快知道了!

如果您在此处有其他问题,我们很乐意为您提供帮助!