C\C++

2013-01-13 7:00 pm
請高手幫我解決一下這個問題,這個試用C語言在Dev c++環境下開發的,我不管輸入多少金額出來的稅都是0= =
程式碼如下:
#include <stdio.h>
#include <stdlib.h>

int main()
{
long income;
float tax;
printf("這個是計算稅的程式!!\n");



printf("請輸入收入值:");

scanf("income:%ld\n", &income);



if(income<=370,000) tax= income*0.06;
if(income>370000 && income<=990000) tax=370000*0.06+(income-370000)*0.13;

if(income>990000 && income<=1980000)
tax=370000*0.06+620000*0.13+(income-990000)*0.21;
if(income>1980000 && income<=37200000)
tax=37000*0.06+620000*0.13+990000*0.21+(income-1980000)*0.3;
if(income>37200000)
tax=37000*0.06+620000*0.13+990000*0.21+1220000*0.3+(income-3720000)*0.4;

printf("你所要繳交的稅金=%.2f\n", tax);
getch();
return 0;
}

回答 (2)

2013-01-20 5:13 am
其實問題唔大...
因為0係正確結果
scanf("income:%ld\n", &income);
改為scanf("%ld", &income); = =""你將income:\n都傳入...
if(income<=370,000) tax= income*0.06;
370,000又係咩回事= =??改為370000會唔會好D
2013-01-14 1:12 am
我估計是type conversion的問題。
由於income是integer,可能算式以integer計算,所有結果為0。
你可以試試在算式中做type conversion,把income指定升級為float,算式應以float運算,即
tax = (float) income * 0.05; 試試。
唔得,可以直接declare income 也是float。
此外,你的if效率低,因為每一句都會執行,雖然邏輯上沒問題,但如果首句if會影響income,或者其實易於避開自開的陷阱,好一點應寫成
if (xxx)
{ 首句 }
else
if (XXX)
{ 次情況 }
之類,因為只有一個case o岩。
不過,你這個情況,改為用 switch 更好。


收錄日期: 2021-04-26 11:33:36
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20130113000051KK00063

檢視 Wayback Machine 備份