第 3 章 第 1 题 精简冗余 if 语句问题 使用数组实现
2014-04-09 11:31
344 查看
问题分析
输入:用户个人收入
输出:该用户要缴纳的个人所得税
约束:不允许使用过多的 if 语句
解答思路
最简单的方法是根据不同的税率区间,创建多个 if 语句来求解。但如此一来便会有 25 个 if 语句段,代码就显得太过冗余。
可以通过将判定条件都存入数组,编写统一性的代码来达到精简程序的目的。
代码实现
说明:为了描述简单,只列举了 5 个税率区间的情况。
小结
当检索区间比较大的时候,为了提高效率还可以用二分法检索。
输入:用户个人收入
输出:该用户要缴纳的个人所得税
约束:不允许使用过多的 if 语句
解答思路
最简单的方法是根据不同的税率区间,创建多个 if 语句来求解。但如此一来便会有 25 个 if 语句段,代码就显得太过冗余。
可以通过将判定条件都存入数组,编写统一性的代码来达到精简程序的目的。
代码实现
说明:为了描述简单,只列举了 5 个税率区间的情况。
#include <iostream> using namespace std; // 定义税率区间数组元素 struct tax_u { int income_t; int base; double rate; }; int main(void) { // 创建并初始化税率区间数组 struct tax_u * t = new struct tax_u[5]; t[0].income_t = 2200; t[0].base = 0; t[0].rate = 0; t[1].income_t = 2700; t[1].base = 0; t[1].rate = 0.14; t[2].income_t = 3200; t[2].base = 70; t[2].rate = 0.15; t[3].income_t = 3700; t[3].base = 145; t[3].rate = 0.16; t[4].income_t = 4200; t[4].base = 225; t[4].rate = 0.17; // 获取用户收入 double income; cout << "请输入你的收入:" << endl; cin >> income; // 判定用户收入所在税率区间 int i; for (i=0; i<5; i++) { if (income <= t[i].income_t) break; } // 计算税率 double tax; if (i==0) { tax = 0; } else if (i>4) { cout << "超出计算范围" << endl; return 1; } else { tax = t[i].base + (income - t[i-1].income_t); } // 打印结果 cout << "需缴纳个人所得税: " << tax << endl; return 0; }
小结
当检索区间比较大的时候,为了提高效率还可以用二分法检索。
相关文章推荐
- jsp中使用jstl的实现类似if ... else 语句
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。Java实现
- (旋转数组问题)给定一个整数类型的循环有序数组,求循环数组的特定值,使用二分查找法(JAVA实现)
- [uEnv.txt]在uEnv.txt文件中使用if语句实现Image/dtb文件切换
- 约瑟夫环问题的 PHP 实现--使用 PHP 数组内部指针操作函数
- 问题处理-JPA使用CASE...WHEN...语句实现数据排序问题
- 不使用乘除法,for,while,if,else,switch,case,条件判断语句(A?B:C) 实现:1+2+....+n
- 第 1 章 第 9 题 使用未初始化数组问题 设立辅助数组实现
- 使用if语句和switch语句时,分号和变量作用域的问题总结
- 用链表解决if语句过多的问题(C/C++实现)
- List的All方法使用问题:我用List1的All方法来确保List1的所有每个数组元素中是否包含Arr1中的任意元素,这个部分很难实现。 因为,没有一个数组中是否包含另一个数组中的任意元素这个功能
- 问题:oracle if;结果:Oracle IF语句的使用
- 约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
- if 语句不使用代码块引起的问题
- 关于统计的一个sql问题,使用动态sql语句实现。
- Java笔记之语言基础_使用if语句时要注意的问题
- 【笔试/面试】—— 不使用大于、小于、if 语句,实现 max 宏
- 使用vue-router与v-if实现tab切换遇到的问题及解决方法
- 实现1+2+3+...+n。要求不能使用乘除法,for,while,if,else,switch,case,等关键字及条件判断语句。
- cmd中if语句set和echo同时使用的问题