如何实现C++菜单程序执行选项后重复菜单的功能?
实现菜单重复展示的解决方案
嘿,这个需求其实很简单,核心就是给你的菜单逻辑套个循环结构就行!我给你整理了修改后的完整代码,还有关键细节的说明,你可以直接用:
修改后的完整代码
#include <iostream> #include <cctype> // 用于toupper()函数,处理大小写输入 using std::cout; using std::cin; using std::endl; int main() { int Hero = 0, Level = 0, Melee = 0, MeleeRanged = 0, Necklace = 0, Charm = 0, Trinket = 0, ItemTotal = 0; int choice; char continueChoice; // 专门存储用户是否继续的选择,避免和功能选项混淆 // 使用do-while循环:保证菜单至少会展示一次,符合执行完选项后重复的需求 do { // 重新展示菜单 cout << "\n===== Menu =====" << endl; cout << "1.) Calculate Hero Power " << endl; cout << "2.) [填写你的功能2描述]" << endl; cout << "3.) How does Item Power work? " << endl; cout << "4.) [填写你的功能4描述]" << endl; cout << "Enter your choice (1-4): "; cin >> choice; // 处理用户的功能选择 switch (choice) { case 1: { cout << "\n--- Calculating Hero Power ---" << endl; cout << "Enter Hero's level: "; cin >> Level; cout << "Enter Melee's power level: "; cin >> Melee; cout << "Enter secondary's Melee/Ranged power level: "; cin >> MeleeRanged; cout << "Enter Necklace's power level: "; cin >> Necklace; cout << "Enter Charm's power level: "; cin >> Charm; cout << "Enter Trinket's power level: "; cin >> Trinket; ItemTotal = Melee + MeleeRanged + Necklace + Charm + Trinket; Hero = 10 * Level + ItemTotal / 5; cout << "Your Hero Power is: " << Hero << endl; break; } case 2: { // 这里填入case 2的具体逻辑 cout << "\nYou selected option 2!" << endl; break; } case 3: { // 这里填入case 3的具体逻辑 cout << "\nItem Power works by summing all your equipped items (Melee, Secondary, Necklace, Charm, Trinket), then averaging that total and adding it to 10x your Hero Level to get your final Hero Power." << endl; break; } case 4: { // 这里填入case 4的具体逻辑 cout << "\nYou selected option 4!" << endl; break; } default: { cout << "\nInvalid choice! Please enter a number between 1 and 4." << endl; break; } } // 询问用户是否继续使用菜单 cout << "\nWould you like to reselect something in the menu?" << endl; cout << "(Y for Yes) (N for No): "; cin >> continueChoice; // 把输入转为大写,兼容用户输入小写y的情况 continueChoice = toupper(continueChoice); // 只要用户输入Y/y,就回到循环开头重新展示菜单 } while (continueChoice == 'Y'); cout << "\nExiting program. Goodbye!" << endl; return 0; }
关键细节说明
- do-while循环:这是最适合这个场景的循环,因为它会先执行一次菜单逻辑,再判断是否继续,完美匹配“执行完选项后重复展示菜单”的需求。
- 独立的continueChoice变量:用单独的字符变量存储用户是否继续的选择,避免和功能选择的
choice整数变量混淆,逻辑更清晰。 - toupper()兼容大小写:用户输入小写
y也能被识别为“继续”,提升程序的友好性。 - default分支:处理用户输入无效选项的情况,避免程序出现无响应的状态,让程序更健壮。
- 菜单分隔线:添加了
===== Menu =====这样的分隔线,让菜单展示更清晰美观。
内容的提问来源于stack exchange,提问作者ThePlayzPaidOff
相关产品推荐
相关产品推荐

