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

C++实现根据菜单列表将用户输入餐品代码自动映射为对应餐名

C++餐品代码自动匹配功能实现方案

现有代码问题点

  • 仅定义了单个meal_ordered、meal_price变量,输入多份餐品时前序数据会被最后一次输入覆盖,无法保存全部订单信息
  • 订单序号从0开始计数,输出缺少*分隔符,价格没有做固定两位小数的格式控制,和要求的输出格式不符
  • 无效餐品码输入后未做兜底处理,会带入脏数据到后续输出环节
  • cin.ignore()放在输入餐品码的循环内部,会错误吞掉有效输入字符
  • 使用C风格strcpy处理字符串存在越界风险,C++环境下优先使用std::string类型更安全

修正后完整代码

#include <iostream>
#include <string>
#include <iomanip>
using namespace std;

int main() {
    string cust_name, cust_add, cust_num;
    int u_code_num;
    const int MAX_ORDER_LIMIT = 20; // 支持的最大餐品份数,可按需调整
    string u_code[MAX_ORDER_LIMIT];
    // 用数组分别存储每一份餐品的名称、价格,避免数据覆盖
    string meal_ordered[MAX_ORDER_LIMIT];
    double meal_price[MAX_ORDER_LIMIT];

    // 采集用户基础信息
    cout << "请输入顾客姓名:";
    cin.ignore();
    getline(cin, cust_name);
    cout << "请输入顾客地址:";
    getline(cin, cust_add);
    cout << "请输入顾客联系电话:";
    getline(cin, cust_num);

    cout << "	需要录入多少个餐品编码?: ";
    cin >> u_code_num;
    // 输入数量超限则截断到最大支持值
    if (u_code_num > MAX_ORDER_LIMIT) {
        u_code_num = MAX_ORDER_LIMIT;
    }
    
    for (int i = 0; i < u_code_num; i++)
    {
        cout << "请输入餐品编码:";
        cin >> u_code[i];
        if (u_code[i] == "s1")
        {
            meal_ordered[i] = "Burger";
            meal_price[i] = 5.00;
        }
        else if (u_code[i] == "s2")
        {
            meal_ordered[i] = "Pizza";
            meal_price[i] = 6.00;
        }
        else
        {
            cout << "餐品编码不存在!" << endl;
            meal_ordered[i] = "未知餐品";
            meal_price[i] = 0.00;
        }
    }

    // 输出订单汇总
    cout << "顾客姓名:" << cust_name << endl;
    cout << "顾客地址:" << cust_add << endl;
    cout << "顾客联系电话:" << cust_num << endl;
    cout << "Summary of Order" << endl;
    // 配置价格固定输出两位小数
    cout << fixed << setprecision(2);
    for (int i = 0; i < u_code_num; i++)
    {
        // 序号从1开始,严格匹配要求的输出格式
        cout << i + 1 << " * " << meal_price[i] << " " << meal_ordered[i] << endl;
    }

    return 0;
}

输出效果验证

当输入餐品编码s1时,订单汇总区域输出完全符合要求:

Summary of Order
1 * 5.00 Burger

如果录入多个餐品,例如1份s1、1份s2,汇总区域会按顺序输出:

Summary of Order
1 * 5.00 Burger
2 * 6.00 Pizza

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 16:06:26