循环时C ++程序不会退出

时间:2015-06-06 17:34:07

标签: c++

当用户输入'Q'或'q'退出程序时,我的C ++程序不会在循环中退出。前两个选项工作正常并调用它们的相应函数,但“退出程序”选项只是无限期地重新启动while循环。

#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;

int main()
{
    char choice; //Varible to hold the user's choice.

    while (choice != 'Q' || choice != 'q')
    {
        //Display the menu and retrieve the user's choice.
        cout << "Please choose from one of the options below:\n\n";
        cout << "A. Calculate the total amount of your bill [Enter A]\n";
        cout << "B. Calculate your BMI [ENTER B]\n";
        cout << "Q. Quit the program [Enter Q]\n\n";
        cout << "Enter your choice: ";
        cin >> choice;

        //Either calculate the user's bill or their BMI based on their choice.
        if (choice == 'A' || choice == 'a')
        {
            caLculateBillAmount();
        }
        else if (choice == 'B' || choice == 'b')
        {
            calculateBMI();
        }
    }

    return 0;
}

2 个答案:

答案 0 :(得分:3)

您应该只使用while (choice !='Q' && choice !='q') {...}。是的,你应该将choice初始化为与'Q'和'q'不同的东西。只需执行char choice=0;之类的操作即可。

答案 1 :(得分:0)

问问自己以下评估内容:

choice != 'Q' || choice != 'q'

如果选择是&#39; Q&#39;然后选择不是&#39; q&#39;所以测试的右半部分是真的。

如果选择是&#39; q&#39;然后选择不是Q&#39; Q&#39;所以测试的左半部分是真的。

你需要使用&amp;&amp;代替||,或者你可以简单地使用toupper(选择)!=&#39; Q&#39;。