C++编码选择交换机上的每种情况

C++编码选择交换机上的每种情况,c++,switch-statement,C++,Switch Statement,因此,我有一个项目,这是我的代码,但我在这段代码中有一个问题,不是只选择一个,而是选择所有可能的情况,所以帮助我,这是代码,我也不知道这是怎么发生的,我仍然在寻找发生的原因,但可能我需要专业的帮助,所以这是代码 #include <iostream> #include <cmath> #include <string> using namespace std; int main() { char one, two, three, four;

因此,我有一个项目,这是我的代码,但我在这段代码中有一个问题,不是只选择一个,而是选择所有可能的情况,所以帮助我,这是代码,我也不知道这是怎么发生的,我仍然在寻找发生的原因,但可能我需要专业的帮助,所以这是代码

#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;
}
你需要

 break
每次都是这样。像这样:

 case 'S':
      {   
          cout << "Enter Measure of the side." << endl;
          cin >> a;
          a= a*a;
          cout << "The Answer is " << a << endl;
          break;
      }
每种情况下。否则,它将在不中断的情况下完成所有案例,这就是您案例中发生的情况

您需要

 break
每次都是这样。像这样:

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

每种情况下。否则它将在不中断的情况下完成所有案例,这就是您案例中发生的情况

添加中断;在每个switch语句的末尾

例如:

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

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

例如:

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

Switch运算符将在括号之间找到的所有情况下搜索开关括号中的任何变量,并在两个变量为==的情况下运行代码。假设您只希望分析其中1个案例,则必须插入一个中断,以便代码在找到与switch运算符括号中的变量相等的案例值后完全离开括号

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

}

断路器必须在外壳支架外,由于中断代码将使线程退出代码正在运行的当前括号。

开关运算符将在括号之间找到的所有情况下搜索开关括号中的任何变量,并在两个变量为==的情况下运行代码。假设您只希望分析其中1个案例,则必须插入一个中断,以便代码在找到与switch运算符括号中的变量相等的案例值后完全离开括号

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

}

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

在每个case末尾都需要中断。仅供参考,不需要放置{}关于案例代码。很高兴有人问这个问题,因为这是一个常见的错误时,第一次乱搞开关语句。作为一名家庭教师,我经常看到这种情况。当你在语言功能方面遇到问题时,你应该查阅一本好书或在线参考资料,例如:我很惊讶我找不到其他问题来重复这篇文章。你需要在每个案例结束时休息一下。仅供参考,没有必要把{}关于案例代码。很高兴有人问这个问题,因为这是一个常见的错误时,第一次乱搞开关语句。作为一名家庭教师,我经常看到这种情况。当你在语言功能方面遇到问题时,你应该查阅一本好书或在线参考资料,例如:我很惊讶,我找不到其他问题来重复这篇文章。不管你把它放在哪里。这只是你偏好的问题。将断路器放在外壳支架内不会导致断路器只退出外壳支架而不退出开关支架吗?不会。例如,如果在For循环内有一个if语句,那么不管是在if内还是在if外有中断,它最终都会中断For循环。这里的情况与此类似。@CodeBlocks:您可以将其视为搜索封闭的作用域,直到找到要绑定的有效作用域为止。cool。不过,还有一个问题。为什么它在外面工作?我的意思是,我猜在if和for循环的情况下,因为break在if语句之外,所以应该在for循环的每次迭代中读取它,从而每次都退出for循环。为什么不是这样?不管你在哪里休息。这只是你偏好的问题。将断路器放在外壳支架内不会导致断路器只退出外壳支架而不退出开关支架吗?不会。例如,如果在For循环内有一个if语句,那么不管是在if内还是在if外有中断,它最终都会中断For循环。这里的情况与此类似。@CodeBlocks:您可以将其视为搜索封闭的作用域,直到找到要绑定的有效作用域为止。cool。不过,还有一个问题。为什么它在外面工作?我的意思是,我猜在if和for循环的情况下,因为break在if语句之外,所以应该在for循环的每次迭代中读取它,从而每次都退出for循环。为什么不是这样?