第 3 章 第 1 题 精简冗余 if 语句问题 使用数组实现
问题分析
输入:用户个人收入
输出:该用户要缴纳的个人所得税
约束:不允许使用过多的 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[];
t[].income_t = ;
t[].base = ;
t[].rate = ;
t[].income_t = ;
t[].base = ;
t[].rate = 0.14;
t[].income_t = ;
t[].base = ;
t[].rate = 0.15;
t[].income_t = ;
t[].base = ;
t[].rate = 0.16;
t[].income_t = ;
t[].base = ;
t[].rate = 0.17; // 获取用户收入
double income;
cout << "请输入你的收入:" << endl;
cin >> income; // 判定用户收入所在税率区间
int i;
for (i=; i<; i++) {
if (income <= t[i].income_t)
break;
} // 计算税率
double tax;
if (i==) {
tax = ;
}
else if (i>) {
cout << "超出计算范围" << endl;
return ;
}
else {
tax = t[i].base + (income - t[i-].income_t);
} // 打印结果
cout << "需缴纳个人所得税: " << tax << endl; return ;
}
小结
当检索区间比较大的时候,为了提高效率还可以用二分法检索。
第 3 章 第 1 题 精简冗余 if 语句问题 使用数组实现的更多相关文章
- 《学习OpenCV》练习题第四章第八题ab
这道题是利用OpenCV例子程序里自带的人脸检测程序,做点图像的复制操作以及alpha融合. 说明:人脸检测的程序我参照了网上现有的例子程序,没有用我用的OpenCV版本(2.4.5)的facedet ...
- 《学习OpenCV》练习题第四章第三题b
#include <highgui.h> #include <cv.h> #include "opencv_libs.h" /* *<学习OpenCV ...
- 《学习OpenCV》练习题第四章第三题a
#include <highgui.h> #include <cv.h> #include "opencv_libs.h" #pragma comment ...
- 《学习OpenCV》练习题第四章第七题abc
题外话:一直是打算把这本书的全部课后编程题写完的,中间断了几个月,一直忙于其他事.现在开始补上. 这道题我不清楚我理解的题意是不是正确的,这道题可以练习用OpenCV实现透视变换(可以用于矫正在3维环 ...
- BZOJ_2683_简单题&&BZOJ_1176_[Balkan2007]Mokia_CDQ分治+树状数组
BZOJ_2683_简单题&&BZOJ_1176_[Balkan2007]Mokia_CDQ分治+树状数组 Description 维护一个W*W的矩阵,初始值均为S.每次操作可以增加 ...
- “《编程珠玑》(第2版)第2章”:B题(向量旋转)
B题是这样子的: 将一个n元一维向量向左旋转(即循环移位)i个位置.例如,当n=8且i=3时,向量abcdefgh旋转为defghabc.简单的代码使用一个n元的中间向量在n步内完成该工作.你能否仅使 ...
- “《编程珠玑》(第2版)第2章”:A题(二分搜索)
A题是这样子的: 给定一个最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中的32位整数(在文件中至少缺失一个这样的数据——为什么?).在具有足够内存的情况下,如何解决该问题?如果有几 ...
- 《Cracking the Coding Interview》——第17章:普通题——题目10
2014-04-28 23:54 题目:XML文件的冗余度很大,主要在于尖括号里的字段名.按照书上给定的方式进行压缩. 解法:这题我居然忘做了,只写了一句话的注解.用python能够相对方便地实现,因 ...
- CPrimerPlus第11章第10题
题目: 编写一个程序,读取输入,直到读入了10个字符串或遇到EOF,由二者中最先被满足的那个终止读取过程.这个程序可以为用户提供一个有5个选项的菜单:输出初始字符串列表.按ASCII顺序输出字符串.按 ...
随机推荐
- 【HNOI2011/bzoj2337】XOR和路径
第二道高斯消元练习题 题意 一张无向图,从点 $1$ 出发每次随机选一条出边走,走到 $n$ 停止,求经过的所有边权异或和的期望. $n\le 100$ 题解 注意一点,异或和的期望 $≠$ 期望的异 ...
- ckeditor小记
widget 只要创建都会执行 init函数,可以绑定事件,但是如果widget释放了,其上绑定的时间也就没有了
- 求N维前缀和
转载自http://blog.csdn.net/jzhang1/article/details/50528549#comments 膜拜 #include <iostream> #incl ...
- input弹出的手机键盘搜索事件
一.input的搜索框 在input标签里面把type设置为search就可以了.弹出的手机键盘回车键也会变成搜索或者是搜索的图标. <input id="search" ...
- 标准C程序设计七---36
Linux应用 编程深入 语言编程 标准C程序设计七---经典C11程序设计 以下内容为阅读: <标准C程序设计>(第7版) 作者 ...
- 眉目传情之匠心独运的kfifo【转】
转自:http://blog.csdn.net/chen19870707/article/details/39899743 权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 一 ...
- wpf LookUpEdit PopupContentTemplate
<dxg:LookUpEdit Name="searchLookUpEdit" HorizontalAlignment="Stretch" PopupHe ...
- wpf GridControl selectAll UnSelect
<Window x:Class="WpfApplication1.GridControlView" xmlns="http://schemas.microsoft. ...
- 如何让一个现有的程序集运行在Silverlight环境中
故事是这样的:我们有一个组件,是一个标准的Class Library,里面有一些代码是实现了某些计算或者业务逻辑.例如下面这样 然后,我们做了一个Silverlight的应用程序,和一个用于运行该程序 ...
- VsCode搭建Java开发环境
1:在 Visual Studio Code 中打开扩展视图(Ctrl+Shift+X),输入关键词java.spring分别下载Java开发插件包和springboot插件包 2:配置参数 点击设置 ...