【问题标题】:C++ help: loops and switchesC++ 帮助:循环和开关
【发布时间】:2017-10-04 19:13:31
【问题描述】:

考虑到它是一个开关,我该如何循环选项 1 和 2?编程新手,很难解决这个问题。任何帮助将不胜感激!

#include <iostream>
using namespace std;

int main()
{
    int userOption;

    cout << "Hello user, what would you like to do?" << endl;
    cout << "Option 1: Display a message" << endl;
    cout << "Option 2: Perform a calculation" << endl;
    cout << "Option 3: Exit program" << endl;
    cin >> userOption;

        switch (userOption)
        {
            char op;
            int num1, num2;

        case 1:
            cout << "Welcome user!" << endl;
            break;
        case 2:
            cout << "Enter + for addition, - for subtraction, * for multiplication or / for division: ";
            cin >> op;
            cout << "Enter two numbers: ";
            cin >> num1 >> num2;
            if (op == '+')
                cout << num1+num2 << endl;
            else if (op == '-')
                cout << num1-num2 << endl;
            else if (op == '*')
                cout << num1*num2 << endl;
            else if (op == '/')
                cout << num1/num2 << endl;
            break;
        case 3:
            cout << "Goodbye!" << endl;
            return 0;
            break;
        default:
            cout << "Please enter valid option!" << endl;

        }
    return 0;
}

【问题讨论】:

  • 您是否尝试过将代码封装在 while 循环中?
  • 您有要循环的案例 1 和 2,以及退出程序的案例 3。如果用循环包围整个菜单,则 1 和 2 将循环,而 3 仍将退出程序。
  • 我应该在哪里插入循环?在哪个语句之前?
  • StackOverflow 上有大量的计算器作业程序。也许你可以搜索它们,看看菜单是如何处理的。

标签: c++ loops if-statement switch-statement control-flow


【解决方案1】:

简单来说,你可以使用这样的东西:

unsigned int selection = 25;
// Print menu and input selection
while (selection != 3)
{
 // Do stuff
  // Print menu and input selection
}

【讨论】:

    【解决方案2】:

    使用while 循环覆盖cinswitch 情况。您可以使用类似下面的内容并使用一个附加变量bContinue,它将决定循环继续多长时间:

    int main() 
    {
        int userOption;
    
        cout << "Hello user, what would you like to do?" << endl;
        cout << "Option 1: Display a message" << endl;
        cout << "Option 2: Perform a calculation" << endl;
        cout << "Option 3: Exit program" << endl;
        bool bContinue = true;
        while(bContinue)
        {
            cin >> userOption;
    
            switch (userOption)
            {
                char op;
                int num1, num2;
    
            case 1:
                cout << "Welcome user!" << endl;
                break;
            case 2:
                cout << "Enter + for addition, - for subtraction, * for multiplication or / for division: ";
                cin >> op;
                cout << "Enter two numbers: ";
                cin >> num1 >> num2;
                if (op == '+')
                    cout << num1+num2 << endl;
                else if (op == '-')
                    cout << num1-num2 << endl;
                else if (op == '*')
                    cout << num1*num2 << endl;
                else if (op == '/')
                    cout << num1/num2 << endl;
                break;
            case 3:
                cout << "Goodbye!" << endl;
                bContinue = false;
                break;
            default:
                cout << "Please enter valid option!" << endl;
            }
        }
        return 0;
    }
    

    【讨论】:

      【解决方案3】:

      使用while 循环创建新变量,但重新格式化一些代码,以便在循环重新开始时继续显示用户选项

      cout << "Hello user, what would you like to do?" << endl;
      
      bool bContinue = true;
      while(bContinue)
      {
          cout << "Option 1: Display a message" << endl;
          cout << "Option 2: Perform a calculation" << endl;
          cout << "Option 3: Exit program" << endl;
      
          cin >> userOption;
      
          switch (userOption)
          {
              char op;
              int num1, num2;
      
          case 1:
              cout << "Welcome user!" << endl;
              break;
          case 2:
              cout << "Enter + for addition, - for subtraction, * for multiplication or / for division: ";
              cin >> op;
              cout << "Enter two numbers: ";
              cin >> num1 >> num2;
              if (op == '+')
                  cout << num1+num2 << endl;
              else if (op == '-')
                  cout << num1-num2 << endl;
              else if (op == '*')
                  cout << num1*num2 << endl;
              else if (op == '/')
                  cout << num1/num2 << endl;
              break;
          case 3:
              cout << "Goodbye!" << endl;
              bContinue = false;
              break;
          default:
              cout << "Please enter valid option!" << endl;
          }
      }
      return 0;
      

      这将使程序在用户看来更好

      【讨论】:

        【解决方案4】:

        使用 do-while 循环,当 userOption 等于 3 时它会停止,因此它会在 userOption 不同于 3 时继续循环,在代码 userOption != 3 中。

        示例代码:

        #include <iostream>
        using namespace std;
        
        int main()
        {
            int userOption;
        
            cout << "Hello user, what would you like to do?" << endl;
            do {
                cout << "Option 1: Display a message" << endl;
                cout << "Option 2: Perform a calculation" << endl;
                cout << "Option 3: Exit program" << endl;
                cin >> userOption;
        
                switch (userOption)
                {
                    char op;
                    int num1, num2;
        
                    case 1:
                        cout << "Welcome user!" << endl;
                        break;
                    case 2:
                        cout << "Enter + for addition, - for subtraction, * for multiplication or / for division: ";
                        cin >> op;
                        cout << "Enter two numbers: ";
                        cin >> num1 >> num2;
                        if (op == '+')
                        cout << num1+num2 << endl;
                        else if (op == '-')
                            cout << num1-num2 << endl;
                        else if (op == '*')
                            cout << num1*num2 << endl;
                        else if (op == '/')
                            cout << num1/num2 << endl;
                        break;
                    case 3:
                        cout << "Goodbye!" << endl;
                        break;
                    default:
                        cout << "Please enter valid option!" << endl;
        
                }
            } while(userOption != 3);
            return 0;
        }
        

        输出:

        Hello user, what would you like to do?
        Option 1: Display a message
        Option 2: Perform a calculation
        Option 3: Exit program
        2
        Enter + for addition, - for subtraction, * for multiplication or / for division: 
        +
        Enter two numbers:
        1
        1
        2
        Option 1: Display a message
        Option 2: Perform a calculation
        Option 3: Exit program
        3
        Goodbye!
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-07-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多