基于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、              容错性

posted on 2007-10-31 16:08  段静迪  阅读(1008)  评论(1编辑  收藏  举报