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

C程序问题:如何为低价商品应用折扣并计算正确应付总额

问题分析与修复

你的代码存在两个关键逻辑错误:

  • 计算总价时未加入高价商品的原价,只算了低价商品相关的金额
  • 折扣后低价商品的价格计算错误,应该是原价 - 折扣金额,而非原价 + 折扣金额

修复步骤

  1. 同时确定低价商品和高价商品的价格
  2. 计算折扣后的低价商品价格:低价商品原价 - 折扣金额
  3. 总价 = 折扣后低价商品价格 + 高价商品原价

修正后的完整代码

#include "stdio.h"
// 一个获取两件商品价格,为低价商品应用折扣并计算应付总额的程序
int main()
{
    float item_one;
    float item_two;
    float discount_percentage= 50;
    float discount_amount;
    float total;
    float cheaper_item;
    float expensive_item; // 新增变量存储高价商品

    printf("\n 输入第一件商品的价格:");
    scanf("%f", &item_one);

    printf("\n 输入第二件商品的价格:");
    scanf("%f", &item_two);

    // 同时确定低价和高价商品
    if ( item_one < item_two) {
        cheaper_item = item_one;
        expensive_item = item_two;
    } else {
        cheaper_item = item_two;
        expensive_item = item_one;
    }

    discount_amount = (discount_percentage * cheaper_item) / 100;

    printf ("\n 折扣金额:%f \n", discount_amount);

    // 计算正确总价:折扣后低价 + 原价高价
    float discounted_cheaper = cheaper_item - discount_amount;
    total = discounted_cheaper + expensive_item;

    printf ("应付总额:%f \n", total);
    return 0; // 补充main函数返回值,符合C标准规范
}

额外优化建议

  • 给输出价格保留两位小数,用printf("应付总额:%.2f \n", total);让结果更符合货币显示习惯
  • 加入输入合法性检查,判断输入价格是否为正数,避免非法输入导致逻辑错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:42:23