正确构建 if 语句

Structuring if statements properly

我正在学习 C 编程 class,我正在做家庭作业。我只是无法正常工作。这是家庭作业:

当有人购买少量小部件时,他们会支付正常价格。当有人买 中等数量的小部件,尼克很高兴,并给了他们正常的折扣 价格。当有人购买大量小物件时,尼克爱上了它们,并给予 他们比正常价格有更大的折扣!但他的问题是:有时这些 金额低于他的原始成本,因此他在销售中赔钱! 为简单起见,我们假设每个小部件的成本为尼克 0.40 美元(所以他应该卖 他们每个人都为他的客户付出了比这更高的成本): #define WIDGET_COST 0.40

为了帮助 Nick 挽救他的生意,请编写一个程序,提示他输入他想要的价格 将出售每个小部件,他将对中等购买打折的百分比,以及百分比 他会对大笔购买打折(每个都是百分比的整数),然后输出一条消息,指出这些选择中的哪一个导致他无法获利。可能的 Nick 可能遇到的问题是(仅输出此列表中的第一个为真):

  1. 尼克,你的底价太低了!
  2. 尼克,你对中号商品的折扣太大了!
  3. 尼克,你对大宗商品的折扣太大了!

如果他的价格没有问题,你应该直接输出: 所有价格对我来说都很好! 从上面输出适当的消息后,不要忘记祝尼克好运 他的新业务: 祝你好运!

到目前为止,这是我的代码:

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 语句的方式:它们不会正确输出,要么说基本价格太低,要么说所有价格都很好,除非我在购买。

替换:

double medium_total = base - medium/100 * base;

double medium_total = base - medium/100.0 * base;

medium 是一个 int,这意味着 medium / 100 是一个整数除法。通过将 100 更改为 100.0 将执行浮点除法。

large_total 声明相同。

在您的代码中,medium 作为 intmedium/100 作为整数除法执行,为 medium < 100 生成 0。这就是为什么

all prices are good, unless I discount over 100 on the purchases

为了避免,请使用强制转换,like

double medium_total = base - ((double)medium)/100 * base;

或将 100 写成 100.0 以执行浮点除法。

large/100 中也有类似情况。