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

C++程序总金额total始终输出0该如何修正

问题原因

该问题是两个C++语法误区导致的:

  • 变量赋值是即时计算的:你在代码最开头初始化total = qty*cost时,qty和cost的值都是0,此时就已经算出total=0了。后续你修改qty和cost的值不会自动更新total的取值,它会一直保留初始计算的0。
  • 局部变量遮蔽了外层变量:在选择笔记本的if分支里,你又写了double cost = 15.50,这相当于在if分支里重新定义了一个和外层重名的局部变量,这个赋值只会生效在当前if分支内部,外层定义的cost变量根本没有被赋值,还是初始的0。
修改方案

只需要做两处修改就能解决问题:

  1. 删掉if分支里cost前的double声明,直接给外层的cost变量赋值
  2. 在获取到用户输入的购买数量qty之后,再手动计算total的值

修改后的完整代码如下:

{
    char itemAnswer = 'a';
    double qty = 0;
    double cost = 0;
    // 此处仅初始化默认值,后续再做计算
    double total = 0;
    double payment = 0;
    double change = 0;
    
    
    std::cout << "Which item would you like to buy?" << std::endl;
    std::cout << "a. Notebook | b. Pencil | c. Ballpen" << std::endl;
    std::cin >> itemAnswer;
    
    if(itemAnswer == 'a' || itemAnswer == 'A')
    {
        // 去掉double声明,直接对外层的cost变量赋值
        cost = 15.50;
        std::cout << "You chose notebook" << std::endl;
        std::cout << "Enter quantity: ";
        std::cin >> qty;
        std::cout << "You added " << qty << " of notebook/s into your cart." << std::endl;
        // 获取到购买数量后再计算总金额
        total = qty * cost;
        std::cout << "Your total will be " << total << " Php" << std::endl;
        std::cout << "Enter payment: ";
        std::cin >> payment;

        while (payment < total)
        {
            std::cout << "You did not pay enough money" << std::endl;
            std::cout << "Enter money again: ";
            std::cin >> payment;
        }
        if (payment >= total)
        {
            change = payment - total;
            std::cout << "You paid " << payment << " Php" << std::endl;
            std::cout << "Your change is " << change << " Php" << std::endl;
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:15:00