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

如何让C++程序持续运行直到用户输入stop指令终止

实现方案

你的现有代码是单次运行逻辑,要实现持续运行直到输入特定命令退出,同时修复原代码里的计算、逻辑问题,可以按以下方式调整:

  • 核心计算逻辑放入无限循环,程序启动后一直等待输入,仅当用户在金额输入位输入stop时跳出循环退出,全程不会在单次计算后询问是否续跑
  • 增加输入状态检测:因为金额默认按数值读取,当用户输入非数字的命令内容时,先清空输入流错误标记,读取字符串判断是否为退出指令,避免输入非数字导致程序崩溃或死循环
  • 同步修复原代码存在的几个明显问题:数值类型用int丢失小数精度、税费计算逻辑错误、存在无意义的冗余输出、system("pause")写在return 0之后永远无法执行、输出文案拼写错误。
修改后完整代码
#include <iostream>
#include <cmath>
#include <string>
#include <limits>
using namespace std;

int main() {
    // 启动时打印一次程序头部
    cout << "\n\t**************************************************************\n";
    cout << "\t\t    D i s c o u n t  &  T a x   C a l c u l a t o r\n";
    cout << "\t**************************************************************\n";
    cout << "提示:金额输入位输入stop可直接退出程序\n\n";

    double bill, discount;
    while (true) {
        cout << "Enter the Amount $";
        // 检测金额输入,若读取数值失败说明用户输入了非数字内容
        if (!(cin >> bill)) {
            string cmd;
            cin.clear(); // 重置输入流错误状态
            cin >> cmd;
            if (cmd == "stop") { // 匹配退出命令,直接跳出循环
                break;
            }
            // 输入其他无效内容时提示后清空缓冲区,重新进入输入流程
            cout << "输入无效,请输入合法金额数值,或输入stop退出\n";
            cin.ignore(numeric_limits<streamsize>::max(), '\n');
            continue;
        }

        cout << "Enter the Discount(%) ";
        cin >> discount;

        // 计算折扣后价格
        double discountedPrice = bill - (bill * discount / 100);
        // 按8.875%税率计算含税总价
        double totalBill = discountedPrice * (1 + 8.875 / 100);

        cout << "Your discounted price is $" << round(discountedPrice * 100) / 100 << endl;
        cout << "Your Total Bill (with 8.875% tax) is $" << round(totalBill * 100) / 100 << endl;

        cout << "\n\t**************************************************************\n";
        cout << "\t\t               C a l c u l a t i o n  D o n e\n";
        cout << "\t**************************************************************\n\n";
    }

    // 退出时打印结束语并暂停
    cout << "\n\t**************************************************************\n";
    cout << "\t\t               T H A N K  Y O U\n";
    cout << "\t**************************************************************\n"; 
    system("pause");
    return 0;
}
关键说明
  • 程序启动后会持续等待用户输入金额、折扣,计算完成后自动回到下一轮金额输入,没有额外的“是否继续”确认步骤
  • 目前退出命令设置为stop,如果需要自定义其他退出关键词,直接修改判断条件里的字符串即可
  • 变量改为double类型支持小数金额、小数折扣输入,计算结果自动保留两位小数,符合日常金额计算的精度要求
  • 输入非数字内容不会导致程序卡死,会提示用户重新输入

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 15:54:21