2013-05-05 137 views
-1

該程序計算折扣。如果我將變量priceperitem更改爲int並對代碼(格式說明符等)進行必要的更改,則計算折扣的語句會完全給出不同的答案。任何人都可以解釋此背後的邏輯。我努力嘗試但不能明白什麼是錯誤的? ..它可以與運營商的關聯性有關嗎?還是僅僅是分裂的事情......?計算混亂

#include<stdio.h> 

main() 
{ 
    int quantity; 
    float priceperitem,expense,discount; 

    printf("Price Per Item ="); 
    scanf("%f",&priceperitem); 

    printf("How much quantity do you want ="); 
    scanf("%d",&quantity); 

    if(quantity>1000) 
    { 
     discount=quantity*priceperitem*10/100; 
     printf("The discount is %f\n",discount); 
     expense=quantity*priceperitem - discount; 
     printf("The discounted price is %f",expense); 
    } 

} 
+1

你有一個給定輸入的例子,它輸出什麼? – j883376 2013-05-05 15:49:16

+2

您正在看[整數除法](http://en.wikipedia.org/wiki/Division_%28mathematics%29#Of_integers) – Shahbaz 2013-05-05 15:51:15

+0

'10/100'評估爲'0' – typ1232 2013-05-05 15:51:59

回答

2

改變priceperitemint會給由於整數除法不同的結果。

變化discount=quantity*priceperitem*10/100;

discount=quantity*priceperitem*10/100f;

+0

或者只是改變'10/100'到'0.1'。 – Kninnug 2013-05-05 15:52:16

+0

好吧,如果我將0.1換成10/100並將priceperitem更改爲int,該怎麼辦? ...它仍然顯示我錯誤的答案......在概念上,在表達式評估中,如果存在實際值,那麼所有整數值必須更改爲實數... – Scorpio 2013-05-05 16:50:40

0

如果它的變化和int的浮動也不會考慮到小數位,這或許是由於整數除法改變你的回答變化

+0

好的,如果我將取代10/100乘以0.1,並將priceperitem更改爲int ??? ...它仍然顯示我錯誤的答案......在概念上,在表達式評估中,如果存在實際值,則所有整數值必須更改爲實數... – Scorpio 2013-05-05 16:51:33