C语言程序设计 计算个人所得税 浙大版,《C语言及程序设计》实践参考——个人所得税计算器switch语句版...

返回:贺老师课程教学链接  项目要求

【项目:个人所得税计算器switch语句版】

编写选择结构程序,输入个人月收入总额,计算出他本月应缴税款和税后收入(计算办法见附:关于个人所得税的有关背景知识)。

(1)用switch语句完成;

(2)可以在下面程序的基本框架基础上完成,如需其他变量自行增加

#include

int main ( )

{

double dSalary,dTax=0,dNetIncome=0;

printf("请输入您本月的收入总额(元):");

scanf("%lf", &dSalary);

// 下面求解应缴个人所和税dTax和税后收入dNetIncome

printf("您本月应缴个人所和税 %.2lf 元,税后收入是 %.2lf 元。\n", dTax, dNetIncome);

printf("依法纳税,共享繁荣。谢谢使用!\n");

return 0;

}附:关于个人所得税的有关背景知识

计算方法:个人所得税=(收入总额-3500)*税率-速算扣除数

从2011年9月1日起,我国个人所得税起征点基数为3500元,超出部分按以下7级计算。

序号

收入范围

税率

速算扣除数

1

超过0至1500

3%

0

2

超过1500元至4500元的部分

10%

105

3

超过4500元至9000元的部分

20%

555

4

超过9,000元至35,000元的部分

25%

1005

5

超过35,000元至55,000元的部分

30%

2755

6

超过55,000元至80,000元的部分

35%

5505

7

超过80,000以上

45%

13505例如:王某月收入总额3600元,个人所得税=(3600-3500)*3%=3元;

再例:李某月收入13500元,个人所得税=(13500-3500)*25%-1005=2500-1005=1495元。

更多了解速算扣除数,请找百度百科。

[参考解答]

解法1:

下面是用switch语句完成的程序。如果感觉这样做还不如直接用if,这种看法也是对的,这种解法的意义也就仅在于练习switch了。

#include

int main ( )

{

double dSalary,dTax=0,dNetIncome=0; //请欣符合匈牙利命名法的变量名

double dValue; //在模板基础上加一个变量,表示超出起征点的收入

double dRate, dOffset; //分别表示税率和速算扣除数

int iStep; //用于确定交税的“档次”

printf("请输入您本月的收入总额(元):");

scanf("%lf", &dSalary);

// 下面求解应缴个人所和税dTax和税后收入dNetIncome

dValue = dSalary - 3500; //在起征点基础上考虑纳税

if(dValue <= 0.0)

dTax = 0.0; //不需要交税

else

{

//这一组if语句确定交税的档次

if(dValue <= 1500)

iStep = 1;

else if(dValue <= 4500)

iStep = 2;

else if(dValue <= 9000)

iStep = 3;

else if(dValue <= 35000)

iStep = 4;

else if(dValue <= 55000)

iStep = 5;

else if(dValue <= 80000)

iStep = 6;

else

iStep = 7;

//根据确定的档次,得到税率和速算扣除数

switch(iStep)

{

case 1:

dRate = 0.03, dOffset = 0.0;

break;

case 2:

dRate = 0.1, dOffset = 105.0;

break;

case 3:

dRate = 0.2, dOffset = 555.0;

break;

case 4:

dRate = 0.25, dOffset = 1005.0;

break;

case 5:

dRate = 0.3, dOffset = 2755.0;

break;

case 6:

dRate = 0.35, dOffset = 5505.0;

break;

case 7:

dRate = 0.45, dOffset = 13505.0;

}

dTax = dValue * dRate - dOffset; //计算所得税,体会将“确定参数”与“计算”分开的好处:思路更明晰,不易在计算公式上犯大错

}

dNetIncome = dSalary-dTax; //计算税后收入

printf("您本月应缴个人所和税 %.2lf 元,税后收入是 %.2lf 元。\n", dTax, dNetIncome);

printf("依法纳税,共享繁荣。谢谢使用!\n");

return 0;

}

解法2:这是我的一位2011级学生提供的解答,很巧妙

#include

int main( )

{

double m=0,s=0,f=0; //m为总收入,s为需要缴税的部分,f为税额

int t=0; //t用做判断

printf("你丫的一个月挣多少银子???\n");

scanf("%lf", &m);

if (m<=3500)

cout<

else

{

s=m-3500;

t=(s>=1500)+(s>=4500)+(s>=9000)+(s>=35000)+(s>=55000)+(s>=80000); //这是亮点,条件表达式为真,其值为1,t表示符合条件的个数

switch(t)

{

case 6:

f=s*0.45-13505;

break;

case 5:

f=s*0.35-5505;

break;

case 4:

f=s*0.30-2755;

break;

case 3:

f=s*0.25-1005;

break;

case 2:

f=s*0.20-555;

break;

case 1:

f=s*0.10-105;

break;

case 0:

f=s*0.03;

break;

}

printf("您的税后收入为:%.2lf \n", m-f);

cout<

printf("* * * * * * * * * * *\n");

printf("* 爱国护税,人人有责 *\n");

printf("* * * * * * * * * * *\n");

}

return 0;

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值