C ++默认在switch语句中不起作用

时间:2019-07-10 13:35:49

标签: c++ switch-statement

这里是编程的新手。我无法在switch语句中使用默认代码来工作。我希望它显示错误并在输入任何不在此范围内的数据时退出。由于某些原因,它会转到cout语句之后的下一个switch行。

#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;

int main()
{
char choice;
const double P=8.00, A=10.50, B=12.50;
double t,w,price;

cout<<"\nPlease enter the state code: ";
cin>>choice;

cout<<"\nPlease enter the Parcel's weight in KG: ";
cin>>w;

switch (choice)
    {
    case 'P':
    case 'p':
        t=w*P;
        price=P;

    break;

    case 'A':
    case 'a':
        t=w*A;
        price=A;

    break;

    case 'B':
    case 'b':
        t=w*B;
        price=B;

    break;

    default:
        cout<<"Error. Please Re-enter. Exiting";

    break;

    }

cout<<setw(80)<<setfill('*')<<"*"<<endl;
cout<<"\nState code: "<<choice<<endl;
cout<<"Weight <KG>: "<<w<<endl;
cout<<"Price <RM>: "<<price<<endl;
std::cout<<std::fixed;
std::cout<<std::setprecision(2);
cout<<"Total Price <RM>: "<<t<<endl;
cout<<"\nThank you and Please Come Again"<<endl;
cout<<setw(80)<<setfill('*')<<"*"<<endl;

return 0;

}

2 个答案:

答案 0 :(得分:6)

如果要以default结束程序,则需要在exit(some_status)之前调用break。否则,break只会导致switch语句结束,您可以在switch块之后继续。

答案 1 :(得分:2)

您需要在错误消息后结束程序。您可以使用调用exit()或return语句。