2015-02-06 151 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也類似的情況。