基于C语言的个人所得税计税系统
问题描述:
我国现行的个人所得税计算方法如下:
级数 全月应纳税所得额 税率(%)
1 不超过500元的 5
2 超过500元至2000元的部分 10
3 超过2000元至5000元的部分 15
4 超过5000元至20000元的部分 20
5 超过20000元至40000元的部分 25
6 超过40000元至60000元的部分 30
7 超过60000元至80000元的部分 35
8 超过80000元至100000元的部分 40
9 超过100000元的部分 45
本实验要求提示用户输入个人的收入后,给出纳税额度和税后工资。
实验目的:
1、提高学员的C编程能力
2、提高学员的逻辑思维能力
3、使学员加深对if语句的理解
问题分析:
如果某人的工资总额为x(= 8000),那么应该按照500*0.05+(2000-500)*0.1+(5000-2000)*0.15+(x-5000)*0.2计算。也就是说在最高“税档”以下的税额是固定的,但是超过最高“税档”的部分按照(X – 税档)*相应税率计算。所以我们必须判断出最高税档,超过最高税档的部分按(X – 税档)*相应税率计算,其它按照(税档差)*相应税率计算。税档是固定的,因此可以把X设为税档上限,就可以重复利用公式(X – 税档)*相应税率计算计算税率。
关键代码解析:
#include <stdio.h>
void main()
{
float m,s,t;
pirntf("请输入你的工资(元):");//提示用户输入工资总额
scanf("%f",&m);//接收工资
t = m;
s = 0;
if(m> 100000)//超过100000按照.45收税
{
s+= (m-100000)*0.45f;
m =100000;
}
if(m> 80000)
{
s+= (m-80000)*0.40f;
m =80000;
}
if(m> 60000)
{
s+= (m-60000)*0.35f;
m =60000;
}
if(m> 40000)
{
s+= (m-40000)*0.30f;
m =40000;
}
if(m> 20000)
{
s+= (m-20000)*0.25f;
m =20000;
}
if(m> 5000)
{
s+= (m-5000)*0.20f;
m =5000;
}
if(m> 2000)
{
s+= (m-2000)*0.15f;
m =2000;
}
if(m> 500)
{
s+= (m-500)*0.10f;
m =500;
}
if(m> 0)
{
s+= (m-0)*0.05f;
//m =500;
}
printf("你的工资总额是: %7.2f",t);
printf("你的税额是: %7.2f",s);
}
存在问题及解决
在实验进行过程中,很多同学放了多余的else导致错误
问题扩充
1、 提供代码的健壮性
2、 容错性