简易版:
输入:月工资收入、缴纳三险一金的费用、专项附加扣除总数
输出:应缴税款=应纳税所得额*适用税率;
其中:应纳税所得额=月工资收入–缴纳三险一金的费用–专项附加扣除总数–5000(起征点)
例如:
张先生在武汉工作每个月工资为10000元,公司每个月缴纳三险一金扣除1000元,赡养父母加上还房贷需要的的专项附加扣除总数为3000,则他每个月应缴税=(10000-1000-3000-5000)3%=30元。
注意:
1、如达不到5000起征点的,是无需纳税的。
2、速算扣除数的意义:假设应纳税所得额是13000元,则应缴个人所得税是:1300020%-1410=1190元
高级版:
专项扣除部分以菜单的形式选择,具体明细如下:
例如:
公司员工张三:2020年1月工资15000元。有一个正在上小学的儿子,子女教育每月扣除1000元;首套住房贷款利息支出每月1000元;父母健在,且是独生子女,赡养老人支出每月可以扣除2000元。五险一金每月缴纳3000元。
应纳税所得额=15000-5000(累计减除费用)-3000(累计专项扣除)-4000(累计专项附加扣除)=2800元
应纳税额=2800*3%=84元
#include<stdio.h>
#include<stdlib.h>
/*******************************************宏速算扣除数***********************************************/
#define ONE 0
#define TWO 210
#define THREE 1410
#define FOUR 2660
#define FIVE 4410
#define SIX 7160
#define SEVEN 15160
double salary = 0,deduction = 0; //薪资和应缴个人所得税
double insurance; //五险一金
double tax = 0; //应纳税所得额
int choose; //功能菜单选择
int month; //缴纳期数
int level; //缴税级数
int children=0,education=0,medical=0,loan=0,rent=0,elderly=0; //扣除专项
double calculator(void);
int main()
{
/********************************************系统界面***************************************************/
printf("********************\n");
printf("欢迎进入税务计算系统\n");
printf("********************\n");
printf("********************\n");
/*******************************************进入操作****************************************************/
printf("请选择缴纳期数(月)\n");
scanf("%d",&month); //输入要缴纳的月数
printf("请输入您的月薪(元)\n");
scanf("%lf",&salary);
printf("请输入五(三)险一金扣除费(元)\n");
scanf("%lf",&insurance);
printf("选择您的扣款专项\n");
printf("0.退出\n");
printf("1.子女教育\n");
printf("2.继续教育\n");
printf("3.大病医疗\n");
printf("4.住房贷款利息\n");
printf("5.住房租金\n");
printf("6.赡养老人\n");
scanf("%d",&choose);
while(1) //循环选择各项扣除基金
{ if(scanf("%d",&choose) == NULL)
{ printf("数据错误!!!请重新输入0-6的数字!"); //对于字母进行报错
scanf("%d",&choose);
}
else if(choose == 1){
printf("请输入您的子女教育专项扣除金(元)\n");
scanf("%d",&children);
printf("请选择其他专项扣除金\n");
scanf("%d",&choose);
}
else if(choose == 2){
printf("请输入您的继续教育专项扣除金(元)\n");
scanf("%d",&education);
printf("请选择其他专项扣除金!\n");
scanf("%d",&choose);
}
else if(choose == 3){
printf("请输入您的大病医疗专项扣除金!(元)\n");
scanf("%d",&medical);
printf("请选择其他专项扣除金!\n");
scanf("%d",&choose);
}
else if(choose == 4){
printf("请输入您的住房贷款利息专项扣除金!(元)\n");
scanf("%d",&loan);
printf("请选择其他专项扣除金!\n");
scanf("%d",&choose);
}
else if(choose == 5){
printf("请输入您的住房租金专项扣除金!(元)\n");
scanf("%d",&rent);
printf("请选择其他专项扣除金!\n");
scanf("%d",&choose);
}
else if(choose == 6){
printf("请输入您的赡养老人专项扣除金!(元)\n");
scanf("%d",&elderly);
printf("请选择其他专项扣除金!\n");
scanf("%d",&choose);
}
else if(choose ==0 ){
break;
}
else {
printf("数据错误!!!请重新输入0-6的数字!"); //大于六的数字进行报错
scanf("%d",&choose);
}
}
/*******************************************封装的calculator计算tax****************************************************/
calculator; //函数调用
printf("您要交的个人所得税是");
printf("%.2f元\n。", deduction*month);
system("pause");
return 0;
}
double calculator(void)
{
tax=salary-insurance-children-education-medical-loan-rent-elderly-5000;
level=(tax>0) +
(tax > 3000) +
(tax > 12000) +
(tax > 25000) +
(tax > 35000) +
(tax > 55000) +
(tax > 80000) ;
if(level = 1)
{
deduction = tax*0.03-ONE;
}
else if(level = 2)
{
deduction = tax*0.1-TWO;
}
else if(level = 3)
{
deduction = tax*0.2-THREE;
}
else if(level = 4)
{
deduction = tax*0.25-FOUR;
}
else if(level = 5)
{
deduction = tax*0.3-FIVE;
}
else if(level = 6)
{
deduction = tax*0.35-SIX;
}
else if(level = 7)
{
deduction = tax*0.45-SEVEN;
}
return tax;
}