taxtable java_C语言计算个人所得税问题代码及解析
問題描述
編寫一個計算個人所得稅的程序,要求輸入收入金額后,能夠輸出應繳的個人所得稅。 個人所得稅征收辦法如下:
◎ 起征點為3500元;
◎ 不超過1500元的部分,征收3%;
◎ 超過1500?4500元的部分,征收10%;
◎ 超過4500?9000元的部分,征收20%;
◎ 超過9000?35000元的部分,征收25%;
◎ 超過35000?55000元的部分,征收30%;
◎ 超過55000?80000元的部分,征收35%;
◎ 超過80000元以上的,征收45%。
問題分析
個人所得稅是根據收入金額劃分為不同階段征收的,分析題目特點,可以使用結構體來描述題目中的條件。
算法設計
可以使用結構體數組存放不同的稅率范圍。接著使用 for 循環遍歷每一個征稅范圍,將個人收入中超出起征點的金額在每個征稅范圍內應繳納的稅款累加起來,就得到最后應繳納的個人所得稅。
納稅金額流程圖:
下面是完整的代碼:
#include
#include
#define TAXBASE? 2000
/*定義結構體*/
typedef struct
{
long start;
long end;
double taxrate;
}TAXTABLE;
TAXTABLE TaxTable[] = {
{0, 1500, 0.03},
{1500, 4500, 0.10},
{4500, 9000, 0.20},
{9000, 35000, 0.25},
{35000, 55000, 0.30},
{55000, 80000, 0.35},
{80000, LONG_MAX, 0.45}
};
double CaculateTax(long profit)
{
int i;
double tax = 0.0;
profit -= TAXBASE;
for(i=0; i
{
if(profit>TaxTable[i].start)
{
if(profit>TaxTable[i].end)
{
tax += (TaxTable[i].end-TaxTable[i].start) * TaxTable[i].taxrate;
}
else
{
tax += (profit-TaxTable[i].start) * TaxTable[i].taxrate;
}
profit -= TaxTable[i].end;
printf("征稅范圍:%6ld~%6ld? 該范圍內繳稅金額:%6.2f? 超出該范圍的金額:%6ld\n",
TaxTable[i].start, TaxTable[i].end,tax, (profit)>0 ? profit:0);
}
}
return tax;
}
int main()
{
long profit;
double tax;
printf("請輸入個人收入金額: ");
scanf("%ld", &profit);
tax = CaculateTax(profit);
printf("您的個人所得稅為: %.2f\n", tax);
return 0;
}
運行結果:
請輸入個人收入金額: 3000
征稅范圍:? ? 0~? 1500? 該范圍內繳稅金額: 30.00? 超出該范圍的金額:? ? 0
您的個人所得稅為: 30.00
linuxidc@linuxidc:~/linuxidc.com$ ./linuxidc.com
請輸入個人收入金額: 5000
征稅范圍:? ? 0~? 1500? 該范圍內繳稅金額: 45.00? 超出該范圍的金額:? 1500
您的個人所得稅為: 45.00
linuxidc@linuxidc:~/linuxidc.com$ ./linuxidc.com
請輸入個人收入金額: 60000
征稅范圍:? ? 0~? 1500? 該范圍內繳稅金額: 45.00? 超出該范圍的金額: 56500
征稅范圍:? 1500~? 4500? 該范圍內繳稅金額:345.00? 超出該范圍的金額: 52000
征稅范圍:? 4500~? 9000? 該范圍內繳稅金額:1245.00? 超出該范圍的金額: 43000
征稅范圍:? 9000~ 35000? 該范圍內繳稅金額:7745.00? 超出該范圍的金額:? 8000
您的個人所得稅為: 7745.00
總結
以上是生活随笔為你收集整理的taxtable java_C语言计算个人所得税问题代码及解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ts watch路由 参数变化_Type
- 下一篇: 信息学奥赛一本通 1910:【00NOI