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

C++代码计算折扣后价格输出始终为0,求排查问题

问题修复:C++折扣计算代码输出异常

核心问题分析

你的代码始终无法得到正确折扣价,根源在于整数除法的运算逻辑:

  • 代码中discount = (youn/100)*sum;这一行,由于youn是年龄(必然小于100的整数),整数除法规则下youn/100的结果直接为0。0乘以任何数都是0,导致折扣金额始终为0,最终输出的是未打折的原价(50),而非预期值。
  • 另外,你把sum +=10放在寻找最小年龄的循环里,虽然结果正确,但逻辑冗余,完全可以直接用sum = 5 * 10替代。

修复后的代码

#include <iostream>
using namespace std;
int main() {
    int ages[5];
    int sum = 5 * 10; // 直接计算5人总原价,无需循环累加
    for (int i = 0; i < 5; i++) {
        cin >> ages[i];
    }
    // 找出最小年龄
    int youn = ages[0];
    for(int i = 0; i < 5; i++){
         if(ages[i] < youn){
            youn = ages[i];
        } 
    }
    // 调整运算顺序:先乘后除,避免提前得到0
    int discount = sum * youn / 100;
    sum -= discount;
    cout << sum;
    return 0;
}

额外优化提示

如果需要支持带小数的精确折扣计算,可以改用浮点数类型处理:

#include <iostream>
#include <cmath> // 用于round()函数
using namespace std;
int main() {
    int ages[5];
    int sum = 50;
    for (int i = 0; i < 5; i++) {
        cin >> ages[i];
    }
    int youn = ages[0];
    for(int i = 0; i < 5; i++){
         if(ages[i] < youn){
            youn = ages[i];
        } 
    }
    // 用浮点数计算精确折扣,再取整
    double exact_discount = sum * (youn / 100.0);
    sum -= static_cast<int>(round(exact_discount)); // 四舍五入取整
    cout << sum;
    return 0;
}

内容的提问来源于stack exchange,提问作者Mohammad Awni Alkhatib

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 11:57:37