C程序问题:如何为低价商品应用折扣并计算正确应付总额
问题分析与修复
你的代码存在两个关键逻辑错误:
- 计算总价时未加入高价商品的原价,只算了低价商品相关的金额
- 折扣后低价商品的价格计算错误,应该是
原价 - 折扣金额,而非原价 + 折扣金额
修复步骤
- 同时确定低价商品和高价商品的价格
- 计算折扣后的低价商品价格:
低价商品原价 - 折扣金额 - 总价 = 折扣后低价商品价格 + 高价商品原价
修正后的完整代码
#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
相关产品推荐
相关产品推荐

