You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现选择后可返回主菜单的C++控制台菜单?

C++计算器菜单返回问题的修改方案及入门资源推荐

修改建议

方案1:用do-while循环实现菜单重复(入门最直观)

直接把菜单显示、选择逻辑放到循环里,做完操作后自动回到菜单,直到用户选择退出。修改后的完整代码如下:

#include <cmath>
#include <iostream>
#include <string>

int main()
{
    int choice;
    do {
        // 修正原代码的多余转义双引号,让菜单显示更干净
        std::cout << "+====| LEO'S CALCULATOR |=========+\n\n";
        std::cout << "1 - Addition\n";
        std::cout << "2 - Subtraction\n";
        std::cout << "3 - Division\n";
        std::cout << "4 - Circle Area\n\n";
        std::cout << "0 - Exit\n";
        std::cout << "+=================================+\n";
        std::cout << "Enter your choice: ";
        std::cin >> choice;

        // 用switch-case替代单个if,处理多选项更清晰
        switch(choice) {
            case 1: {
                double num1, num2;
                std::cout << "Enter two numbers: ";
                std::cin >> num1 >> num2;
                std::cout << "Result: " << num1 + num2 << "\n";
                break;
            }
            case 2: {
                double num1, num2;
                std::cout << "Enter two numbers: ";
                std::cin >> num1 >> num2;
                std::cout << "Result: " << num1 - num2 << "\n";
                break;
            }
            case 3: {
                double num1, num2;
                std::cout << "Enter dividend and divisor: ";
                std::cin >> num1 >> num2;
                if(num2 != 0) {
                    std::cout << "Result: " << num1 / num2 << "\n";
                } else {
                    std::cout << "Error: Cannot divide by zero!\n";
                }
                break;
            }
            case 4: {
                double radius;
                const double pi = 3.14159; // 用更精确的圆周率
                std::cout << "What is the radius of your circle? ";
                std::cin >> radius;
                if(radius >= 0) {
                    double circleArea = pi * pow(radius, 2);
                    std::cout << "The area of your circle is: " << circleArea << "\n";
                } else {
                    std::cout << "Error: Radius cannot be negative!\n";
                }
                break;
            }
            case 0:
                std::cout << "Exiting calculator...\n";
                break;
            default:
                std::cout << "Invalid choice! Please try again.\n";
        }

        // 暂停让用户查看结果,按回车后回到菜单
        std::cout << "\nPress Enter to continue...";
        std::cin.ignore(); // 清除输入缓冲区的换行符
        std::cin.get();
        system("cls"); // Windows清屏,Linux/macOS替换为"clear"
    } while(choice != 0); // 用户选0时退出循环

    return 0;
}

核心修改点:

  • 用do-while循环确保菜单至少运行一次,做完操作后自动重复,直到用户选0退出
  • 修正原代码中cout的多余转义双引号,避免输出带引号
  • 补充加减除法的完整逻辑,增加错误处理(除数为0、半径负数等)
  • 加入暂停和清屏,提升操作体验

方案2:封装菜单函数(代码更模块化)

把显示菜单的逻辑单独封装成函数,主循环只调用这个函数,便于后续维护:

#include <cmath>
#include <iostream>
#include <string>

// 封装显示菜单的函数
void showCalculatorMenu() {
    std::cout << "+====| LEO'S CALCULATOR |=========+\n\n";
    std::cout << "1 - Addition\n";
    std::cout << "2 - Subtraction\n";
    std::cout << "3 - Division\n";
    std::cout << "4 - Circle Area\n\n";
    std::cout << "0 - Exit\n";
    std::cout << "+=================================+\n";
    std::cout << "Enter your choice: ";
}

int main()
{
    int choice;
    do {
        system("cls");
        showCalculatorMenu(); // 调用菜单函数
        std::cin >> choice;

        // 以下选择处理逻辑和方案1完全一致,此处省略重复代码
        switch(choice) {
            case 1: { /* 加法逻辑 */ } break;
            case 2: { /* 减法逻辑 */ } break;
            case 3: { /* 除法逻辑 */ } break;
            case 4: { /* 圆形面积逻辑 */ } break;
            case 0: std::cout << "Exiting calculator...\n"; break;
            default: std::cout << "Invalid choice! Please try again.\n";
        }

        std::cout << "\nPress Enter to continue...";
        std::cin.ignore();
        std::cin.get();
    } while(choice != 0);

    return 0;
}

这种方式的好处是:菜单内容需要修改时,只需要改showCalculatorMenu函数,不用动主逻辑,符合代码模块化的思想。

入门学习资源推荐

  • 书籍:
    • 《C++ Primer Plus》:入门友好,例子丰富,把基础概念讲得细致易懂,适合零基础
    • 《C++ Primer》:C++领域经典教材,内容深入,适合有一定基础后进阶
  • 视频教程:
    • 国内黑马程序员、尚硅谷的C++入门教程:免费且系统,跟着敲代码容易上手
  • 文档:
    • CppReference:权威的C++语法文档,查函数用法、语法规则非常方便

内容的提问来源于stack exchange,提问作者LEOO37

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 16:15:42