/* * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 文件名称:9-2-2 个人所得税计算器(switch) * 作 者:孙红蕾 * 完成日期:2012 年 10 月 28 日 * 版 本 号:v1.0 * 输入描述:个人月收入总额 * 问题描述:按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 * 个人所得税=(收入总额-3500)*税率-速算扣除数 * 程序输出:应缴税款和税后收入 * 算法设计:略 */ #include <iostream> using namespace std; int main( ) { double dSalary,dTax = 0,dNetIncome = 0; //请欣符合匈牙利命名法的变量名 double dValue; //在模板基础上加一个变量,表示超出起征点的收入 double dRate, dOffset; //分别表示税率和速算扣除数 int iStep; //用于确定交税的“档次” cout<<"请输入您本月的收入总额(元):"; cin>>dSalary; 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; //根据确定的档次,得到税率和速算扣除数,这样处理和问题中给出的列表形式有较好的对应 //如果按照教材中的例子,通过类似c=s/n(n最大取500)的形式得到switch的<表达式>,下面的清单得列的很长 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; //计算税后收入 cout<<"您本月应缴个人所得税 "<<dTax<<" 元,税后收入是 "<<dNetIncome<<" 元。\n"; cout<<"依法纳税,共享繁荣。谢谢使用!\n"; return 0; }
运行结果:
心得体会: