2015-02-06 93 views
-2

我在介绍C编程课,我正在做一个家庭作业。我无法正常工作。这是作业的作业:正确构建if语句

当有人购买少量小部件时,他们支付正常的价格。当有人购买中等数量的小部件 时,尼克相当高兴,并给予他们正常 价格的折扣。当有人购买大量的小工具时,尼克爱上了他们,并给予他们比正常价格更大的折扣!但是他的问题是这样的:有时这些数额低于他的原始成本,所以他在出售时亏损了! 为简单起见,我们假设每个插件的成本尼克$ 0.40每一个(所以他应该是比这更高的成本,他的客户销售他们每个人的 ): #define WIDGET_COST 0.40

为了帮助尼克救他的事,请写一个程序,将提示他的价格,他将销售每个部件的价格,他将折扣中等购买的百分比,以及百分比 他将通过(每个百分比的整数)折扣大量购买,然后将输出消息表明这些选择中的哪些导致他不能获利。可能 问题尼克能有有(输出只有第一个在这个名单是真的):

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

回答

0

替换:

double medium_total = base - medium/100 * base; 

double medium_total = base - medium/100.0 * base; 

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

large_total声明。

+0

就是这样!非常感谢!我无法相信简单的小数点就是我所需要的!哈哈,我显然有很多东西要学。但再次感谢! – staringblind 2015-02-06 19:54:45

+0

@staringblind欢迎您! – ouah 2015-02-06 19:57:32

0

在代码中,medium被一个intmedium/100被作为整数除法进行的,产生一个用于0medium < 100。这就是为什么

所有的价格都不错,除非我打折了100对购买

要避免,请使用强制转换,像

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

或写100100.0到强制执行浮点部分。

large/100也类似的情况。