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

C++饮品点单程序数组统计各饮品数量错误问题求解

饮品点单程序问题修复

错误原因

  • 计数数组beverageCount未初始化,初始值为内存随机值,计数基础逻辑错误
  • 每次统计用户选择前都会执行beverageCount[choice] = 0,清空对应饮品的历史计数,导致无论选择多少次对应计数最多为1
  • 未判断choice是否为-1就操作计数数组,输入-1时会访问beverageCount[-1]造成数组越界,触发不可预期的错误
  • 非法输入提示文案与实际可选值不符,实际可选值为0/1/2/3,原有提示写为1/2/3/4,易误导用户
  • 总计数逻辑冗余,输入-1的操作也被计入总次数,需要额外减1修正结果

修复后完整代码

#include <iostream>
#include <iomanip>

using namespace std;
int main()
{
    const int size = 4;
    string beverage[size] = { "Coffee", "Tea", "Coke", "Orange Juice" };
    // 初始化计数数组所有元素为0
    int beverageCount[size] = {0};
    int choice = 0;
    int total = 0;

    while (choice != -1)
    {
        cout << "请输入你想选择的饮品编号:可选择0、1、2、3,输入-1退出程序\n";
        cin >> choice;
        
        // 非法值校验
        while ((choice < 0 || choice > 3) && choice != -1)
        {
            cout << "输入无效,仅可选择0、1、2、3或-1,请重新输入\n";
            cin >> choice;
        }

        // 仅有效选择时计数,排除终止指令-1
        if (choice != -1) {
            beverageCount[choice]++;
            total++;
        }
        
        // 收到终止指令时输出结果
        if (choice == -1)
        {
            cout << "总选择饮品数量:" << total << endl;
            cout << "各饮品选择次数:" << endl;
            for (int i=0; i<size; i++)
            {
                cout << beverage[i] << ":" << beverageCount[i] << endl;
            }
        }
    }
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:27:03