C ++循环虽然不等于两个值

时间:2017-03-13 19:56:52

标签: c++ character do-while

我做错了什么?我有一个菜单,可以循环,而cLetter不等于'Q'。

我希望能够输入'Q'或'q'并退出循环。似乎无法使语法正确。

编辑主持人要求我改进这个问题。不确定还有什么要补充的。对于do-while循环,我希望它继续循环,直到输入“Q”或“q”为止。输入“Q”或“q”时,程序应退出循环。

//开始计划

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

int main()
{
    double Num1;
    double Num2;
    double sum;
    double difference;
    double product;
    double quotient;

    char cLetter; // Selecting Integers
    cout << "Please enter an integer: ";
    cin >> Num1;
    cout << "Please enter another integer: ";
    cin >> Num2;

    do {

        cout << "Select a letter to perform a calculation:" << endl; // Main Menu
        cout << "A for Addition" << endl;
        cout << "S for Subtraction" << endl;
        cout << "M for Multiplication" << endl;
        cout << "D for Division (BUT NOT BY ZERO)" << endl;
        cout << "N to enter 2 new numbers" << endl;
        cout << "Q to Quit" << endl;
        cin >> cLetter;

        //Perform Calculations

        sum = Num1 + Num2;
        difference = Num1 - Num2;
        product = Num1 * Num2;
        quotient = Num1 / Num2;

        //Choices Made
        if ((cLetter == 'A') || (cLetter == 'a')) //Addition
        {
            cout << "Addition" << endl;
            cout << "Sum = " << sum << endl;
        }
        else if ((cLetter == 'S') || (cLetter == 's')) //Subtraction
        {
            cout << "Subtraction" << endl;
            cout << "Difference = " << difference << endl;
        }
        else if ((cLetter == 'M') || (cLetter == 'm')) //Multiplication
        {
            cout << "Multiplication" << endl;
            cout << "Product = " << product << endl;
        }
        else if (((cLetter == 'D') && (Num2 == '0')) ||
                 ((cLetter == 'd') && (Num2 == '0'))) // Cannot be divided by zero
        {
            cout << "Cannot Divide by Zero!" << endl;

        }
        else if ((cLetter == 'D') || (cLetter == 'd')) //Division
        {
            cout << "Division" << endl;
            cout << "Quotient = " << quotient << endl;
        }
        else if ((cLetter == 'N') || (cLetter == 'n')) // New Integers
        {
            cout << "Please enter an integer: ";
            cin >> Num1;
            cout << "Please enter another integer: ";
            cin >> Num2;
        }

        else if ((cLetter == 'Q') || (cLetter == 'q')) // Quitting
        {
            cout << "Quitting" << endl; // Invalid Statement
        }
        else  // invalid letter
        {
            cout << "Invalid letter, enter letter from list" << endl; // Invalid Statement
        }

    }
//    while ((cLetter != 'Q') || (cLetter != 'q'));  //can't seem to get this to work. Next line does.
    while (cLetter != 'Q');
    cout << "Goodbye!" << endl;

    return 0;
}

//结束程序

1 个答案:

答案 0 :(得分:2)

一封信不能同时是qQ。因此,每个字母不等于q或不等于Q。您需要使用逻辑运算符(&&),而不是逻辑||)运算符:

do {
    // code
} while (cLetter != 'q' && cLetter != 'Q');
// Here ----------------^