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

【项目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)*税率-速算扣除数
从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元。
更多了解速算扣除数,请找百度百科。

[参考解答]

#include <stdio.h>
#define BaseSalary 3500
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}
};
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;
}

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

  1. C语言结构体工资缴税,C语言进阶-第11~13讲:结构体实践(成绩处理个税计算器之码数分离)...

    任务和代码(一): 成绩处理 /* *All rights reserved *文件名称:main.c *作者: Osseyda *完成日期:2017.11.6 *版本号:v2. * *问题描述:定义 ...

  2. 进阶项目5-个税计算器之码数分离

    任务和代码:编写程序,利用这个结构体数组,输入个人月收入总额,计算并输出他本月应缴税款和税后收入.  附:关于个人所得税的有关背景知识  计算方法:个人所得税=(收入总额-3500)*税率-速算扣除数 ...

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

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 返回:贺 ...

  4. C语言及程序设计 实践参考——个人所得税计算器if语句版

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 返回:贺 ...

  5. C语言及程序设计 实践参考——定期存款利息计算器

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 返回:贺 ...

  6. 法雷序列的c语言程序,程序设计实践(一).PDF

    程序设计实践(一) 程序设计实践(一): 风格.设计和实现 王新宇 2004.10.16 Outline 风格 原则 示例 设计和实践 马尔可夫链(Markov Chain) C, JAVA, C++ ...

  7. C语言课间程序设计实践报告

    <贪吃蛇>简介      玩家使用方向键操控一条长长的蛇不断吞下豆子,同时蛇身随着吞下的豆子不断变长,当蛇头撞到蛇身或障壁时游戏结束.贪吃蛇最初为人们所知的是诺基亚手机附带的一个小游戏,它 ...

  8. 《C++语言基础》实践参考——友元类

    返回:贺老师课程教学链接 [项目5-友元类] 定义下面两个类的成员函数(为体验友元类,实际上本例并不一定是一个好的设计,将两个类的合并为一个DateTime,日期.时间都处理更好) class Dat ...

  9. 《C++语言基础》实践参考——我的向量类

    返回:贺老师课程教学链接 项目要求 [项目4-我的向量类] 建立一个向量类MyVector,声明如下,请完成类的定义 class MyVector //定义向量类 { public:MyVector( ...

最新文章

  1. GDB attach到进程
  2. js判断是否在iframe和禁止网页在iframe中显示
  3. 计算机应用基础模4答案,2012年自考“计算机应用基础”练习题及答案四
  4. 域控 批量导入 用户_kerberos域用户提权分析
  5. ssh框架分页显示问题
  6. bellman ford 算法 判断是否存在负环
  7. 汇编语言第二课作业2.3
  8. java 使用vsphere 创建虚拟机‘_Java数组的创建及使用
  9. 将对象转成 json 以及 将字符串 hash(SHA1) 加密
  10. AtmosphericCorrection大气校正_landsat8
  11. MySQL常用命令收录
  12. 软件实习项目4——校园一卡通管理系统(实验准备与设计)
  13. 百度文库免费下载,精选六种方法!
  14. Excel数据分析入门-数据透视表
  15. LCM ASN 在MOBILE下收货流程的后台数据流
  16. Dell OptiPlex 7090插入耳机有声音没有麦克风的解决方案
  17. 统一软件过程的基本概念
  18. 我弟今年高考,报的志愿是电子信息,到现在录取的是计算机科学与技术,哪个专业更好一些,2021年电子信息科学与技术专业大学排名及分数线【统计表】...
  19. 打破 FOXMAIL 疯狂占用磁盘读写资源的魔障
  20. 免费打造个人网站,免费域名,免费空间,ftp使用,数据库等,免费就能搭建个人网站

热门文章

  1. c语言数组变量的类型转换,C语言强制类型转换
  2. 行偏角-倾斜角-滚动角
  3. Java怎么输入字符?
  4. Git 一键提交sh脚本命令
  5. 第983期机器学习日报(2017-05-28)
  6. 仿京东左侧分类导航栏实现(Jquery)
  7. 无线网络优化目标及内容介绍
  8. 抖音直播运营操作技巧(超详细)
  9. EXCEL函数笔记1(数学函数、文本函数、日期函数)
  10. 打破时空壁垒,智慧“中枢”助您搭建理想生活