1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 《C语言及程序设计》实践参考——个税计算器之码数分离

《C语言及程序设计》实践参考——个税计算器之码数分离

时间:2022-12-25 05:20:32

相关推荐

《C语言及程序设计》实践参考——个税计算器之码数分离

返回:贺老师课程教学链接

【项目5-个税计算器之码数分离】

在学习分支结构时,我们做过一个个人所得税计算器if语句版,在其中,税率等数据直接写进了程序。这并不是一个好的方案。

下面定义了一个结构体数组,保存各个收入范围个税计算的基础数据,这样,一定程度上,将代码与数据分离,这是工程中常见的做法。

请先对照附后的个人所得税计算方法,理解下面的结构体数组:

struct TaxNode{int payTax;double rate;int deducted;} taxNode[10]={{0,0.03,0},{1500,0.10,105},{4500,0.20,555},{9000,0.25,1005},{35000,0.30,2755},{55000,0.35,5505},{80000,0.45,13505}};

编写程序,利用这个结构体数组,输入个人月收入总额,计算并输出他本月应缴税款和税后收入。

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

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

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

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

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

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

[参考解答]

#include <stdio.h>#define BaseSalary 3500struct TaxNode{int payTax;double rate;int deducted;} taxNode[10]={{0,0.03,0},{1500,0.10,105},{4500,0.20,555},{9000,0.25,1005},{35000,0.30,2755},{55000,0.35,5505},{80000,0.45,13505}};int main(){double dSalary,dTax=0,dNetIncome=0;double dValue; //表示超出起征点的收入printf("请输入您本月的收入总额(元):");scanf("%lf", &dSalary);dValue=dSalary-BaseSalary;int i;if(dValue<=0.0){dTax=0.0;}else{for(i = 6; i >= 0; i--){printf("%d\n",i);if(dValue > taxNode[i].payTax){dTax = dValue * taxNode[i].rate - taxNode[i].deducted;break;}}}dNetIncome=dSalary-dTax; //计算得到printf("您本月应缴个人所和税 %.2lf 元,税后收入是 %.2lf 元。\n", dTax, dNetIncome);printf("依法纳税,共享繁荣。谢谢使用!\n");return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。