如何让C++套餐价格计算程序循环运行直至用户输入X作为套餐代码?
当然可以用while循环实现!
其实更贴合这个场景的是do-while循环(因为我们希望程序先执行一次套餐计算逻辑,再判断是否退出),不过用普通while循环也能做到,我两种都给你讲讲:
方法一:使用do-while循环(推荐)
do-while的特点是先执行一次循环体,再判断终止条件,完美匹配“先运行程序,输入套餐,再决定是否退出”的需求。修改后的代码如下:
#include <iostream> using namespace std; int main(){ int price_package; char package_code; int no_of_adults; int no_of_childs; do { cout << "Enter package code (X to exit): "; cin >> package_code; // 先判断是否要退出 if (package_code == 'X') { cout << "Program exited successfully." << endl; break; // 触发退出循环 } // 处理套餐计算逻辑 if(package_code == 'A'){ cout << "Enter number of adults: "; cin >> no_of_adults; cout << "Enter number of childs: "; cin >> no_of_childs; price_package = (40 * no_of_adults) + (21 * no_of_childs); cout << "Price package: RM" << price_package << endl; } else if(package_code == 'B'){ cout << "Enter number of adults: "; cin >> no_of_adults; cout << "Enter number of childs: "; cin >> no_of_childs; price_package = (23 * no_of_adults) + (14 * no_of_childs); cout << "Price package: RM" << price_package << endl; } else if(package_code == 'C'){ cout << "Enter number of adults: "; cin >> no_of_adults; cout << "Enter number of childs: "; cin >> no_of_childs; price_package = (38 * no_of_adults) + (18 * no_of_childs); cout << "Price package: RM" << price_package << endl; } else{ cout << "ERROR: Invalid package code! Please enter A/B/C/X." << endl; } // 加空行让输出更清晰 cout << endl; } while (true); // 无限循环,直到输入X触发break return 0; }
关键修改点:
- 把核心逻辑放到
do { ... } while(true)结构里,用break在输入X时主动退出循环 - 优化了错误提示信息,让用户更清楚输入要求
- 每次循环后添加空行,提升输出的可读性
方法二:使用普通while循环
如果一定要用普通while循环,我们需要先在循环外输入一次套餐代码,再判断是否进入循环:
#include <iostream> using namespace std; int main(){ int price_package; char package_code; int no_of_adults; int no_of_childs; // 先输入一次套餐代码,作为循环的初始判断条件 cout << "Enter package code (X to exit): "; cin >> package_code; while (package_code != 'X') { if(package_code == 'A'){ cout << "Enter number of adults: "; cin >> no_of_adults; cout << "Enter number of childs: "; cin >> no_of_childs; price_package = (40 * no_of_adults) + (21 * no_of_childs); cout << "Price package: RM" << price_package << endl; } else if(package_code == 'B'){ cout << "Enter number of adults: "; cin >> no_of_adults; cout << "Enter number of childs: "; cin >> no_of_childs; price_package = (23 * no_of_adults) + (14 * no_of_childs); cout << "Price package: RM" << price_package << endl; } else if(package_code == 'C'){ cout << "Enter number of adults: "; cin >> no_of_adults; cout << "Enter number of childs: "; cin >> no_of_childs; price_package = (38 * no_of_adults) + (18 * no_of_childs); cout << "Price package: RM" << price_package << endl; } else{ cout << "ERROR: Invalid package code! Please enter A/B/C/X." << endl; } cout << endl; // 再次输入套餐代码,更新循环判断条件 cout << "Enter package code (X to exit): "; cin >> package_code; } cout << "Program exited successfully." << endl; return 0; }
关键修改点:
- 循环执行前先获取一次输入,确定是否进入循环
- 每次循环结束后再次获取输入,更新循环的判断条件
- 当输入X时,循环终止,执行退出提示
两种方法都能实现需求,个人更推荐do-while,因为它避免了重复编写输入提示的代码,逻辑更简洁。
内容的提问来源于stack exchange,提问作者may
相关产品推荐
相关产品推荐

