C++ 当声明不起作用时? #包括 #包括 使用名称空间std; int main() { 整数; 浮动成本; 炭饮料; 布尔有效平均数; 不能

C++ 当声明不起作用时? #包括 #包括 使用名称空间std; int main() { 整数; 浮动成本; 炭饮料; 布尔有效平均数; 不能,c++,C++,改变 #include <iostream> #include <iomanip> using namespace std; int main() { int number; float cost; char beverage; bool validBeverage; cout << fixed << showpoint << setprecision(2); do {

改变

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    int number;
    float cost;
    char beverage;

    bool validBeverage;

    cout << fixed << showpoint << setprecision(2);
    do
    {
        cout << endl << endl;
        cout << "Hot Beverage Menu" << endl << endl;
        cout << "A: Coffee         $1.00" << endl;
        cout << "B: Tea            $ .75" << endl;
        cout << "C: Hot Chocolate  $1.25" << endl;
        cout << "D: Cappuccino     $2.50" << endl <<endl << endl;

        cout << "Enter the beverage A,B,C, or D you desire" << endl;
        cout << "Enter E to exit the program" << endl << endl;
        cin>>beverage;
        while(beverage!='A'||beverage!='B'||beverage!='C'||beverage!='D'||beverage!='E'||beverage!='a'||beverage!='b'||beverage!='c'||
        beverage!='d'||beverage!='e')
        {
            cout<<"Your selection is invalid please re-enter ";
            cin>>beverage;
        }

        switch(beverage)
        {
        case 'a':  validBeverage = true;
        case 'A':  validBeverage = true;
        case 'b':  validBeverage = true;
        case 'B':  validBeverage = true;
        case 'c':  validBeverage = true;
        case 'C':  validBeverage = true;
        case 'd':  validBeverage = true;
        case 'D':  validBeverage = true;
                   break;
        default:   validBeverage = false;
        }

        if (validBeverage == true)
        {
            cout << "How many cups would you like?" << endl;
        cin>>number;
        }
        // Fill in the code to begin a switch statement
        switch(beverage)
        {
        case 'a': cost = number * 1.0;
        case 'A': cost = number * 1.0;
                cout << "The total cost is $ " << cost << endl;
                break;
        case 'b': cost = number * 0.75;
        case 'B': cost = number * 0.75;
                cout<< "The total cost is $ " << cost << endl;
                break;
        case 'c': cost = number * 1.25;
        case 'C': cost = number * 1.25;
                cout << "The total cost is $ " << cost << endl;
                break;
        case 'd': cost = number * 2.50;
        case 'D': cost = number * 2.50;
                cout << "The total cost is $ " << cost << endl;
        case 'e': cout << " Please come again" << endl;
        case 'E': cout << " Please come again" << endl;
                break;
        default:cout << " You have enter an invalid selection"<<endl;
                cout << " Try again please" << endl;
        }

    }while(beverage!='e'||beverage!='E');
}

同样地,在第一个while循环条件表达式中,将所有
|
替换为
&&

while(beverage!='e'&& beverage!='E');  

以这种情况为例,其他情况也存在同样的问题

while(beverage!='A' && beverage!='B' &&beverage!='C'&& beverage!='D' && beverage!='E' && beverage!='a' && beverage!='b' && beverage!='c' &&
     beverage!='d' && beverage!='e')
字符要么不等于
'e'
,要么等于
'e'
,在这种情况下,它不等于
'e'
,因此该条件始终为真


你想要的是逻辑和。

|
是或。
饮料
当然不同于
A
B
或……你想要的
&
代码风格的评论:你过度使用了案例下拉列表。就像你喝饮料“e”,它会打印“请再来一次”两次。@Almo,更糟糕的是,做两次乘法。好吧,乘法是小操作,不会改变输出。所以我认为被复制的couts更糟糕。:)调试101:如果你的大代码块不能按预期工作,请将其分解成更小的代码位(或打印中间结果)检查哪些部分按预期工作,哪些部分不按预期工作。检查你的假设。推论:你自己做了什么?
while(beverage!='A' && beverage!='B' &&beverage!='C'&& beverage!='D' && beverage!='E' && beverage!='a' && beverage!='b' && beverage!='c' &&
     beverage!='d' && beverage!='e')
while (beverage!='e'||beverage!='E');