1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 【C语言及程序设计】项目1-24-4:个人所得税计算器if语句版

【C语言及程序设计】项目1-24-4:个人所得税计算器if语句版

时间:2020-03-26 13:59:17

相关推荐

【C语言及程序设计】项目1-24-4:个人所得税计算器if语句版

对比笔者和老师的code

笔者:

1 // 个人所得税计算器if语句版.cpp: 2 问题描述:/sxhelijian/article/details/43918271 3 // 4 5 #include "stdafx.h" 6 7 8 int main() 9 {10double dSalary, dTax = 0, dNetIncome = 0;11printf("请输入您本月的收入总额(元):");12scanf_s("%lf", &dSalary);13// 下面求解应缴个人所和税dTax和税后收入dNetIncome 14 15if (dSalary <= 3500)16{17 dTax = 0;18 dNetIncome = dSalary;19}20else21{22 if (dSalary <= 5000)23 {24 dTax = (dSalary - 3500) *3.0 / 100 - 0;25 dNetIncome = dSalary - dTax;26 }27 else28 {29 if (dSalary <= 8000)30 {31 dTax = (dSalary - 3500) *10.0 / 100 - 105;32 dNetIncome = dSalary - dTax;33 }34 else35 {36 if (dSalary <= 12500 )37 {38 dTax = (dSalary - 3500) *20.0 / 100 - 555;39 dNetIncome = dSalary - dTax;40 }41 else42 {43 if (dSalary <= 38500)44 {45dTax = (dSalary - 3500) *25.0 / 100 - 1005;46dNetIncome = dSalary - dTax;47 }48 else49 {50if (dSalary <= 58500)51{52 dTax = (dSalary - 3500) *30.0 / 100 - 2755;53 dNetIncome = dSalary - dTax;54}55else56{57 if (dSalary <= 83500)58 {59 dTax = (dSalary - 3500) *35.0 / 100 - 5505;60 dNetIncome = dSalary - dTax;61 }62 else63 {64 dTax = (dSalary - 3500) *45.0 / 100 - 13505;65 dNetIncome = dSalary - dTax;66 }67}68 }69 }70 }71 }72}73 74 75printf("您本月应缴个人所和税 %.2lf 元,税后收入是 %.2lf 元。\n", dTax, dNetIncome);76printf("依法纳税,共享繁荣。谢谢使用!\n");77return 0;78 }

老师:

1 #include <stdio.h> 2 int main ( ) 3 { 4double dSalary,dTax=0,dNetIncome=0; //请欣符合匈牙利命名法的变量名 5double dValue; //在模板基础上加一个变量,表示超出起征点的收入 6double dRate, dOffset; //分别表示税率和速算扣除数 7printf("请输入您本月的收入总额(元):"); 8scanf("%lf", &dSalary); 9// 下面求解应缴个人所和税dTax和税后收入dNetIncome 10dValue = dSalary - 3500; //在起征点基础上考虑纳税 11if(dValue <= 0.0) 12 dTax = 0.0; //不需要交税 13else 14{ 15 if(dValue <= 1500) 16 dRate = 0.03, dOffset = 0.0; //这一组if语句用于得到税率和速算扣除数 17 else if(dValue <= 4500) 18 dRate = 0.1, dOffset = 105.0; 19 else if(dValue <= 9000) 20 dRate = 0.2, dOffset = 555.0; 21 else if(dValue <= 35000) 22 dRate = 0.25, dOffset = 1005.0; 23 else if(dValue <= 55000) 24 dRate = 0.3, dOffset = 2755.0; 25 else if(dValue <= 80000) 26 dRate = 0.35, dOffset = 5505.0; 27 else 28 dRate = 0.45, dOffset = 13505.0; 29 dTax = dValue * dRate - dOffset; //计算所得税,体会将“确定参数”与“计算”分开的好处:思路更明晰,不易在计算公式上犯大错 30} 31dNetIncome = dSalary-dTax; //计算税后收入 32printf("您本月应缴个人所和税 %.2lf 元,税后收入是 %.2lf 元。\n", dTax, dNetIncome); 33printf("依法纳税,共享繁荣。谢谢使用!\n"); 34return 0; 35 }

感想:

1.这个问题非常简单,所以笔者的code还算凑合,但是老师的code明显更优(更容易阅读与维护),因为其中体现了“模块化”的编程思维(我感觉这类似 C++的面向对象的思维,即OOP),所以小问题也蕴含着大道理;

2.程序中的bug 基本上可以分成三种:语法错误、运行错误、逻辑错误。其中最棘手的错误是逻辑错误。

但事实上,语法错误中也有一种非常棘手的错误,那就是 编译器不会报错的语法错误,程序规模一大,极其难以排查,如

if( x = 100 )if(); //单分支

这些错误,有些聪明的编译器(如vs的最新版)也能查出来,但不聪明的就不会提示出来了。要避免这样的错误,只有靠经验与养成良好的编程习惯(convention)。

if( 100 == x )if(){}//单分支

=

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