C++使用并行数组实现咖啡加料计价功能的修改问题
C++咖啡加料计费程序修改方案
你需要在原有代码的基础上增加外层循环,支撑多次输入校验,同时累计总价格,以下是具体修改逻辑和完整代码:
核心修改点
- 将用户输入、加料校验、价格计算的逻辑封装到外层循环中,循环终止条件为用户输入
XXX - 每次循环开始时重置
foundIt标志位,避免上一轮的校验结果干扰本轮判断 - 校验到合法加料后直接将对应价格累加到总价变量
orderTotal,同时输出当前加料的单价 - 所有加料输入完成后统一输出整杯咖啡的最终总价
修改后完整代码
#include <iostream> #include <string> using namespace std; int main() { const int NUM_ITEMS = 5; // 支持的加料总数 // 加料名称数组 string addIns[] = { "Cream", "Cinnamon", "Chocolate", "Amaretto", "Whiskey" }; // 对应加料单价数组 double addInPrices[] = { .89, .25, .59, 1.50, 1.75 }; double orderTotal = 2.00; // 咖啡基础售价2美元 const string QUIT = "XXX"; string addIn; // 外层循环:支持多次输入加料 while (true) { cout << "输入咖啡加料名称,输入XXX结束输入:"; cin >> addIn; if (addIn == QUIT) { break; } bool foundIt = false; int matchIndex = -1; // 校验加料是否在支持列表中 for (int x = 0; x < NUM_ITEMS; x++) { if (addIn == addIns[x]) { foundIt = true; matchIndex = x; break; } } if (foundIt) { cout << addIns[matchIndex] << " 价格:$" << addInPrices[matchIndex] << endl; orderTotal += addInPrices[matchIndex]; cout << "当前累计总价:$" << orderTotal << endl; } else { cout << "抱歉,我们不提供该加料。" << endl; cout << "当前累计总价:$" << orderTotal << endl; } } // 输出最终总价 cout << "整杯咖啡总价格为:$" << orderTotal << endl; return 0; }
运行说明
- 程序启动后会反复提示输入加料,直到输入
XXX结束输入 - 每次输入合法加料会打印对应单价,同时累加总价
- 输入不合法加料会给出提示,不会修改当前总价
- 输入结束后会输出整杯咖啡的最终总价格
内容的提问来源于stack exchange,提问作者Leo
相关产品推荐
相关产品推荐

