c ++编码选择开关代码的每个案例

时间:2014-08-21 02:56:47

标签: c++ switch-statement

所以我有一个项目,这是我的代码但我在这个代码中有一个问题,而不是只选择一个它选择每个可能的情况所以帮助我,这是代码我也不知道这是怎么发生的即时通讯仍在寻找原因,为什么会发生这种情况,但也许我需要专业的帮助,所以这是代码

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

int main()
{
    char one, two, three, four;
    double a, b, c, d;



    cout << "What do you want to find on the square?" << endl;
    cout << "A. Area" << endl;
    cout << "B. Side" << endl;
    cout << "C. Diagonal" << endl;
    cout << "D. Perimeter" << endl;
    cin >> one ;
    one = toupper(one);
    switch (one)
        {
        case 'A':
            {   cout << "What is Given" << endl;
                cout << "S. Side" << endl;
                cout << "D. Diagonal" << endl;
                cout << "P. Perimeter" << endl;
                cin >> two;
                two = toupper(two);
                switch (two)
                    {   
                    case 'S':
                        {   
                            cout << "Enter Measure of the side." << endl;
                            cin >> a;
                            a= a*a;
                            cout << "The Answer is " << a << endl;

                        }
                    case 'D':
                        {
                            cout << "Enter Measure of the diagonal" << endl;
                            cin >> a;
                            a= pow( a/sqrt(2), 2);
                            cout << "The Answer is " << a << endl;

                        }
                    case 'P':
                        {
                            cout << "Enter measure of Perimeter" << endl;
                            cin >> c;
                            c= pow(c/4, 2);
                            cout << "The Answer is " << c << endl;
                        }
                    default :
                        {
                        }
                    }
            }
        }


    return 0;
}

3 个答案:

答案 0 :(得分:5)

你需要

 break

每个案例之后。像这样:

 case 'S':
      {   
          cout << "Enter Measure of the side." << endl;
          cin >> a;
          a= a*a;
          cout << "The Answer is " << a << endl;
          break;
      }

适用于所有情况。否则它将经历所有案例而不会中断,这就是你的案例中发生的事情

答案 1 :(得分:2)

添加休息时间;在每个switch语句的末尾。

示例:

switch ( a ) {
case b:
  // Do something
  break;
default:
  // Do Something
  break;
}

答案 2 :(得分:0)

Switch操作符将在括号内找到的所有情况下搜索切换括号中的任何变量,并在2个变量为==的情况下运行代码。鉴于您只需要分析其中一个案例,必须插入“break”,以便在找到与switch开关操作符的括号中找到的变量相等的case值后,代码将完全保留括号。 / p>

switch (a) 
{
    case b:
    {
    ...
    }
    break;
    case c:
    {
    ...
    }
    break;

}

break必须在case括号之外,因为break代码会使线程退出当前运行代码的括号。