编写一段程序,程序要实现如下功能: 某商场给予顾客购物的折扣率如下: 购物金额200 不折扣
500元〉购物金额>=200 9折
1000元>购物金额>=500元 8折
购物金额>=1000元 7.5折
输入一个购物金额,输出打折率、购物实际金额。
问题:为什么我的实际金额是乱码,打折率永远是0
关注【以下回答由 GPT 生成】
解决方案:
首先,可能导致实际金额乱码的原因是使用了不正确的格式化符号来输出实际金额。使用%d格式化符号输出实际金额将导致乱码,正确的格式化符号应该是%f。
其次,折扣率始终为0可能是因为计算折扣率时没有执行正确的分支条件。在当前的代码中,只使用了 if 条件语句,并没有使用 else if 或者 else 条件语句来判断其他情况。
以下是修复错误的代码实现:
#include <stdio.h>
int main() {
float amount, discount = 1.0;
printf("请输入购物金额:");
scanf("%f", &amount);
if (amount > 200 && amount <= 500) {
discount = 0.9;
} else if (amount > 500 && amount <= 1000) {
discount = 0.8;
} else if (amount >= 1000) {
discount = 0.75;
}
float actual_amount = amount * discount;
printf("购物实际金额:%.2f\n", actual_amount);
printf("折扣率:%.2f\n", discount);
return 0;
}
这段代码首先定义了一个变量 amount 用来存储用户输入的购物金额,以及一个变量 discount 来存储折扣率,默认折扣率为1.0。
接下来,使用 scanf 函数获取用户输入的购物金额。
然后,使用 if-else if-else 条件语句来判断购物金额所对应的折扣率。如果购物金额在指定区间内,则将对应的折扣率赋值给 discount。
最后,根据折扣率和购物金额计算实际金额,将结果输出到屏幕上,并使用 %.2f 格式化符号来保留两位小数。
这段代码修复了实际金额乱码和折扣率始终为0的问题,运行程序后可以正确计算并输出购物实际金额和折扣率。
【相关推荐】