编程珠玑第三章习题1

原创 2016年06月01日 15:24:33

问题:

1. 本书行将出版之时,美国的个人所得税分为5种不同的费率,其中最大的费率大约为40%。以前的情况更为复杂,税率也更高。下面所示的程序文本采用25个if语句的合理方式来计算1978年的美国联邦所得税。税率分别为0.14,0.15,0.16, 0.17, 0.18,·····。此后的费率增幅大于0.01.有何建议? 

	
if income <= 2200
    tax = 0
else if income < 2700
    tax =        .14 * (income - 2200)
else if income <= 3200
    tax = 70   +   .15 * (income - 2700)
else if income <= 3700
    tax = 145 +   .16 * (income - 2200)
else if income <= 4200
    tax = 225 +  .17 * (income - 2200)
.....
else 
   tax = 53090 + .70 * (income - 102200)
参考代码:
// Pearls3_1.cpp : Defines the entry point for the console application.
//编程珠玑第二版 习题3.1
//主要思路:用一个表来保存税收所有的税率选项,表的每一项包含三部分:该等级的下界,基本税收,超出下界的税率
//然后根据公式计算出工资属于表的第几项,再根据项中的税率选项计算出应缴的税

#include "stdafx.h"
#include<iostream>
#include<assert.h>
#define N 5

using namespace std;

struct tax{
	double bound;//该等级的下界
	double base;//基本税收
	double rate;//超出下界的税率
};

tax taxTable[N];

void CreateTable()//构建税收表
{
	taxTable[0].bound = 0;
	taxTable[0].base = 0;
	taxTable[0].rate = 0;
	taxTable[1].bound = 2200;
	taxTable[1].base = 0;
	taxTable[1].rate = 0.14;
	for (int i = 2; i < N; ++i)
	{
		taxTable[i].bound = taxTable[i - 1].bound + 500;
		taxTable[i].rate = taxTable[i - 1].rate + 0.01;
		taxTable[i].base = taxTable[i - 1].base + taxTable[i - 1].rate * 500;
	}
}

double calculate_tax(double income)
{
	assert(income <= 4200);
	int index = (income - 2200+500-1) / 500;
	cout << "打印当前的计算公式:" << endl;
	cout << taxTable[index].base << " + " << taxTable[index].rate << " * (income - " << taxTable[index].bound << ")" << endl;
	return taxTable[index].base + taxTable[index].rate*(income - taxTable[index].bound);
}
int _tmain(int argc, _TCHAR* argv[])
{
	CreateTable();
	cout << "请输入工资收入(income):";
	int income;
	while (cin >> income){
		cout << "tax = " << calculate_tax(income) << endl;
		cout << "请输入工资收入(income):";
	}

	return 0;
	return 0;
}<span style="color:#ff0000;">
</span>

参考:
http://blog.csdn.net/johnnyhu90/article/details/42710505

编程珠玑1

编程珠玑第一章中提出问题,需要对包含1到N之间n个整数的文件进行排序,文件无法直接放到内存中,每个整数之多出现一次。但是对时间复杂度和空间复杂度要求很高。如何高效的实现呢?      对于时间复杂度...

编程珠玑记录(一)

编程珠玑第二部分 性能(效率) 第六章 程序性能分析 第七章 粗略估算 第八章 算法设计技术 第九章 代码调优 第十章 节省空间 第六章 程序性能分析提高程序性能的方法有 算法...

编程珠玑之第三章习题1

问题描述: 1. 本书行将出版之时,美国的个人所得税分为5种不同的费率,其中最大的费率大约为40%。以前的情况更为复杂,税率也更高。下面所示的程序文本采用25个if语句的合理方式来计算1978年的美...

编程珠玑 第二版 第三章 习题答案

Exercise 1、在网上看到很多人都是先用数组来

编程珠玑第三章课后习题

3、编写标语函数,输入一个大写字母,输出一个字符数组,该字符数组用字符图形方式描绘该字母 这题不大懂,百度了下答案,发现答案的重点在于将26个字母用特定的表示方式表示出来,可以考虑为字母的外形设计一...

编程珠玑第三章3.7习题(1-4)

1.收税问题。 关注收税区间段的起始部分,结束部分,及此区间的税率;因为收税区间段都是每500$一个间隔且税率也随着收税区间的提高每次加上0.01;因而很容易得到下面的循环累加程序。package ...

编程珠玑第三章习题3.7(5-8)

5.将输入的单词表示成带有后缀连字符的单词package chapter3;public class t5 { public static String matchSuffix(String...

编程珠玑(第三章)中的有趣的一道练习题(习题8):seven-segment devices

编程珠玑第三章有真么一道练习题:seven-segmnt devices provide an inexpensive display ofthe ten decimal digits; ...

《编程珠玑》习题练习In Python——第三章 数据决定程序结构

本章的主旨是:数据视图决定了程序结构。简单的数据表示可以使用简单高效的程序来处理。好的数据表示是好的程序的前提。正如好的食物原料是做出美味食物的前提。 本章中的编程思路总结: 1、尽量使用数组处理...

编程珠玑第三章—习题4(日期问题)

问题1:给定两个日期,计算两者之间的天数。 解答:可以现将月和日换算成该年的第多少天,用后者减去前者,然后年份差距乘以365,同时考虑到两个年份之间闰年的个数,如果闰年个数为n,则最后结果再加上n. ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:编程珠玑第三章习题1
举报原因:
原因补充:

(最多只允许输入30个字)