内容简介:编写一个计算个人所得税的程序,要求输入收入金额后,能够输出应缴的个人所得税。 个人所得税征收办法如下:个人所得税是根据收入金额划分为不同阶段征收的,分析题目特点,可以使用结构体来描述题目中的条件。可以使用结构体数组存放不同的税率范围。接着使用 for 循环遍历每一个征税范围,将个人收入中超出起征点的金额在每个征税范围内应缴纳的税款累加起来,就得到最后应缴纳的个人所得税。
问题描述
编写一个计算个人所得税的程序,要求输入收入金额后,能够输出应缴的个人所得税。 个人所得税征收办法如下:
- ◎ 起征点为3500元;
- ◎ 不超过1500元的部分,征收3%;
- ◎ 超过1500〜4500元的部分,征收10%;
- ◎ 超过4500〜9000元的部分,征收20%;
- ◎ 超过9000〜35000元的部分,征收25%;
- ◎ 超过35000〜55000元的部分,征收30%;
- ◎ 超过55000〜80000元的部分,征收35%;
- ◎ 超过80000元以上的,征收45%。
问题分析
个人所得税是根据收入金额划分为不同阶段征收的,分析题目特点,可以使用结构体来描述题目中的条件。
算法设计
可以使用结构体数组存放不同的税率范围。接着使用 for 循环遍历每一个征税范围,将个人收入中超出起征点的金额在每个征税范围内应缴纳的税款累加起来,就得到最后应缴纳的个人所得税。
纳税金额流程图:
下面是完整的代码:
#include <stdio.h>
#include <limits.h>
#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<sizeof(TaxTable)/sizeof(TAXTABLE); 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
Linux公社的RSS地址 : https://www.linuxidc.com/rssFeed.aspx
本文永久更新链接地址: https://www.linuxidc.com/Linux/2018-12/155755.htm
以上所述就是小编给大家介绍的《C语言计算个人所得税问题代码及解析》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。