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

如何让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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:37:56