如何实现选择后可返回主菜单的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
相关产品推荐
相关产品推荐

