1.问题描述
编写一个计算个人所得税的程序,要求输入收入金额后,能够输出应缴的个人所得税。个人所得税征收办法如下:
起征点3500元
不超过1500元的部分,征收3%.
超过1500~4500元的部分,征收10%.
超过4500~9000元的部分,征收20%.
超过9000~35000元的部分,征收25%.
超过35000~55000元的部分,征收30%.
超过55000~80000元的部分,征收35%.
超过80000元的部分,征收45%.
2.源码实现
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TAXBASE 3500
/*定义结构体*/
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, 1e10, 0.45}};
/*计算所得税的函数*/
double CaculateTax(long profit)
{
double tax = 0.0;
int n = 0;
int i;
n = sizeof(TaxTable)/sizeof(TAXTABLE);
profit -= TAXBASE;
for(i=0; i<n; 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;
break;
}
}
}
return tax;
}
int main()
{
long profit;
double tax;
printf("请输入个人收入金额: ");
scanf("%ld", &profit);
tax = CaculateTax(profit);
printf("您的个人所得税为: %.2lf\n", tax);
return 0;
}
3.编译源码
$ gcc -o test test.c -std=c89
4.运行及其结果
请输入个人收入金额: 4000
您的个人所得税为: 15.00
网友评论