我正在参加C编程课程,我正在完成一项家庭作业。我无法正常工作。这是家庭作业:
当有人购买少量小部件时,他们支付正常价格。当有人买
中等数量的小工具,尼克非常高兴,并给予他们正常折扣
价钱。当有人购买大量的小工具时,尼克会爱上他们并给予他们
他们比正常价格折扣更大!但他的问题是:有时这些
金额低于原始成本,因此他在出售时亏本!
为简单起见,我们假设每个小部件每个花费0.40美元(所以他应该卖
他们每个人的成本都高于他的客户):
#define WIDGET_COST 0.40
为了帮助尼克保住他的生意,请写一个程序,提示他付出代价 将出售每个小部件,他将折扣中等购买的百分比和百分比 他将对大量购买进行折扣(每个整数除以一个百分比),然后输出消息,表明这些选择中的哪一个导致他不能获利。可能 尼克可能有的问题(仅输出此列表中的第一个为真):
如果他的价格没有问题,你应该输出: 所有价格对我来说都很好! 从上面输出相应的消息后,不要忘记希望尼克好运 他的新业务: 祝你好运!
到目前为止,这是我的代码:
int main(){
double base;
printf("How much are you selling each widget for?\n");
scanf("%lf", &base);
int medium;
printf("How much are you discounting medium orders?\n");
scanf("%d", &medium);
int large;
printf("How much are you discounting large orders?\n");
scanf("%d", &large);
double medium_total = base - medium/100 * base;
double large_total = base - large/100 * base;
if (base < WIDGET_COST) {
printf("Nick, your base prices are to low!\n");
}else if (medium_total < WIDGET_COST){
printf("Nick, you are discounting medium purchases too much!\n");
}else if (large_total < WIDGET_COST){
printf("Nick, you are discounting large purchases too much!\n");
}else {
printf("All prices look good to me!\n");
}
printf("Good luck!\n");
return 0;
}
我做错了什么?
我认为这可能是我如何构建if语句:它们不能正确输出,或者它会说基价太低或者说所有价格都是好的,除非我在购买时折扣超过100。
答案 0 :(得分:0)
替换:
double medium_total = base - medium/100 * base;
与
double medium_total = base - medium/100.0 * base;
medium
是int
,这意味着medium / 100
是整数除法。通过将100
更改为100.0
,将执行浮点除法。
large_total
声明相同。
答案 1 :(得分:0)
在您的代码中,medium
为int
,medium/100
正在执行整数除法,为0
生成medium < 100
。这就是为什么
所有价格都不错,除非我购买的折扣超过100
要避免,请使用演员表,如
double medium_total = base - ((double)medium)/100 * base;
或将100
写为100.0
以强制执行浮点除法。
large/100
中的类似案例。