个人所得税问题

问题描述

编写一个计算个人所得税的程序,

要求输入收入金额后,能够输出应缴的个人所得税,

个人所得税征收方法如下:

​ 起征点为3500元

​ 不超过1500元的部分,征收3%

​ 超过1500-4500元的部分,征收10%

​ 超过4500-9000元的部分,征收20%

​ 超过9000-35000元的部分,征收25%

​ 超过35000-55000元的部分,征收30%

​ 超过55000-80000元的部分,征收35%

​ 超过80000元以上的,征收45%

问题分析

分析题目特点,考虑使用结构体来描述题目中的条件

c语言中允许用户自己定义结构体,它相当于其它高级语言中的记录

声明一个结构体类型的一般形式为

​ struct 结构体名

​ {结构体成员列表}

算法设计

使用结构体存放不同的税率范围,接着使用for循环遍历每一个征税范围

将个人收入中超出起征点的金额在每个征税范围内应缴纳的税款累加起来

就得到最后应缴纳的个人所得税

#include <stdio.h>#define TAXBASE 3500/* !<定义结构体 */
typedef struct {long start;long end;double taxrate;
} TAXTABLE;/* 定义结构体数组 */
TAXTABLE TaxTable[] = {{0, 1500, 0.03},{1500, 4500, 0.10},{4500, 9000, 0.20},{9000, 35000, 0.25},{35000, 55000, 0.30},{55000, 80000, 0.35},{80000, 1e10, 0.45}};
/* !<Caculate function */
double CaculateTax(long profit)
{int i;double tax = 0.0;profit -= TAXBASE;      /* !< 超过个税起征点的收入 */for (i = 0; i < sizeof(TaxTable)/sizeof(TAXTABLE); i++) {/* !<判断profit是否在当前的缴税范围内 */if (profit > TaxTable[i].start) {if (profit > TaxTable[i].end) {tax += (TaxTable[i].end - TaxTable[i].start)*TaxTable[i].taxrate;}else {  /* !< profit 未超过当前的缴税范围 */tax += (profit - TaxTable[i].start)*TaxTable[i].taxrate;}profit -= TaxTable[i].end;printf("征税范围: %6ld-%6ld 该范围内缴税金额: %6.2f 超出该范围的金额:%6ld\n",TaxTable[i].start,TaxTable[i].end,tax,(profit)>0 ? profit : 0);}}return tax;
}int main(void)
{long profit;double tax;printf("请输入个人收入金额:");scanf("%ld", &profit);tax = CaculateTax(profit);printf("您的个人所得税为: %12.2f\n",tax);
}/* !< output */ 请输入个人收入金额:9876征税范围:      0-  1500 该范围内缴税金额:  45.00 超出该范围的金额:  4876征税范围:   1500-  4500 该范围内缴税金额: 345.00 超出该范围的金额:   376您的个人所得税为:       345.00Process returned 0 (0x0)   execution time : 2.772 sPress any key to continue.

转载于:https://www.cnblogs.com/xuzhaoping/p/11484560.html

初级系列11.个人所得税问题相关推荐

  1. SAP PM 初级系列11 - 为维修工单触发采购申请

    SAP PM 初级系列11 - 为维修工单触发采购申请 执行事务代码IW32,输入维修工单号,进入维修工单的修改界面,进入components选项卡,可以为维修工单增加备品备件(non-stock i ...

  2. Hololens开发初级 系列 1-安装开发环境

    Hololens开发初级 系列 1-安装开发环境 官方 //本文是对上面文章的简单翻译及实践记录, 英文OK的话,直接去看官网更好. 目录 1 操作系统和硬件要求 2 开发环境清单 3 操作系统 4 ...

  3. SAP PM 初级系列之27 – SAP系统怎么知道某种类型的维修工单检验批上的检验类型是14?

    SAP PM 初级系列之27 – SAP系统怎么知道某种类型的维修工单检验批上的检验类型是14? 比如在SAP系统中,Calibration类型的维修工单,工单下达后自动触发了检验批,检验类型是14. ...

  4. SAP PM 初级系列26 - 设备功能位置的Document

    SAP PM 初级系列26 - 设备&功能位置的Document 1, 使用事务代码CV01N 创建了一个文档,与某个设备以及功能位置关联了,如下图示, 2, 执行事务代码IE03去显示该设备 ...

  5. SAP PM 初级系列25 - 维修工单与采购单据之间LINK?

    SAP PM 初级系列25 - 维修工单与采购单据之间LINK? SAP系统是一个高度集成的软件系统,各个业务单据之间的LINK关系,都能在系统上很方便的查找到. SAP PM模块与采购业务之间也是有 ...

  6. SAP PM 初级系列24 - 发料到维修工单

    SAP PM 初级系列24 - 发料到维修工单 SAP PM模块里,对于维修工单的发料,跟对于生产订单的发料操作类似的,也是使用MIGO事务代码,移动类型261. 执行MIGO,选A07(Goods ...

  7. SAP PM 初级系列23 - IW22 事务代码里创建维修工单

    SAP PM 初级系列23 - IW22 事务代码里创建维修工单 SAP PM模块里,事务代码IW22用于修改一个已经存在的维修通知单. 实际上在这个界面里,不仅可以修改维修通知单相关的数据,而且可以 ...

  8. SAP PM 初级系列22 - IW38可以批量处理维修工单

    SAP PM 初级系列22 - IW38可以批量处理维修工单 SAP PM模块的事务代码IW38功能强大,可以作为维修部门计划人员的一个很重要的主工作台.在这里他可以针对各种类型的维修工单,尤其是未完 ...

  9. SAP PM 初级系列21 - 一个技术关闭的维修工单不能再被修改了!

    SAP PM 初级系列21 - 一个技术关闭的维修工单不能再被修改了! 维修工单号:102333362已经被Techical completion了, 试图执行IW32去修改它, 系统提示说:Noti ...

  10. SAP PM 初级系列19 - IP10为维修计划触发维修工单的同时也自动触发了维修通知单!

    SAP PM 初级系列19 - IP10为维修计划触发维修工单的同时也自动触发了维修通知单! 执行事务代码IP10, 输入维修计划代码,回车, 点击Manual call按钮,如上图.进入如下界面, ...

最新文章

  1. HarmonyOS UI开发 AdaptiveBoxLayout(自适应盒子布局) 的使用
  2. Android自定义控件系列之基础篇
  3. Double 与 Float 的值的比較结果
  4. HT for Web 3D游戏设计设计--汉诺塔(Towers of Hanoi)
  5. angr学习笔记(8)(文件内容符号化)
  6. CodeForces - 1095C Powers Of Two(思维)
  7. 如何将不带web.xml的Spring应用程序部署到Tomcat
  8. 4.3串的模式匹配算法(BF算法)
  9. PhotoZoom专业版-图像无损放大工具
  10. java holder_Java DataHolder.supports方法代码示例
  11. [MAC] 小技巧– 取消屏幕缩放功能,以免不小心误触
  12. 如何根治BYOD中国式“水土不服”
  13. 电子设计从零开始(1)
  14. aiml php,基于 AIML 的 PHP 聊天机器人
  15. java实现pdf旋转_java生成pdf旋转_如何使用Java旋转PDF文档中的图像?
  16. Eason's concert
  17. bs84c12引脚_最新BS84B12A-3.pdf
  18. Nature Reviews | 2019年新发现的药物靶点
  19. Cocos Creator AssetBundle 游戏分包方案评估
  20. 求方程的解(简化版)

热门文章

  1. vue 页脚_如何将页脚固定在页面底部_sticky footer, Layout, templates, 会员专栏 教程_w3cplus...
  2. 阿里云ODPS升级为一体化大数据平台 满足用户多元化数据计算需求
  3. linux分区btrfs,Linux文件系统之btrfs
  4. BZOJ 3786: 星系探索 ETT
  5. flea-db使用之JPA接入
  6. 最详细Python打包exe教程,并修改图标,只需30秒
  7. Android Stidio修改桌面图标
  8. 中南大学2019计算机研究生分数线,2019中南大学研究生分数线(含2016-2019历年复试)...
  9. 非对称TSP问题(asymmetric travelling salesman problem)与对称TSP问题的转换
  10. 京东话费充值,点击出现的css样式