计算1995年美国个人所得税

《C和指针》第8章编程练习第2题:

 1 /*
 2 ** 计算1995年美国公民的个人收入所得税
 3 */
 4 
 5 #include <stdio.h>
 6 #include <float.h> // 该头文件中包含double类型能表示的最大的数DBL_MAX
 7 
 8 double single_tax( double income );
 9 
10 /*
11 ** 将表格中划分的区间存在数组中
12 */
13 static double const income_limit[] = { 0, 23350, 56550, 117950, 256500, DBL_MAX };
14 static double const   base_tax[] = { 0, 3502.5, 12798.5, 31832.5, 81710.5 };
15 static double const percentage[] = { 0.15, 0.28, 0.31, 0.36, 0.396 };
16 
17 int main()
18 {
19     double income;
20     scanf( "%lf", & income );
21     printf( "%lf", single_tax( income ) );
22     
23     return 0;
24 }
25 
26 /*
27 ** 函数,计算相应收入对应上交的税额
28 ** 题目中函数原型的数据类型为float,但测试中发现float不够精确
29 */
30 double 
31 single_tax( double income )
32 {
33     int range;
34     double tax;
35     
36     /*
37     ** 获取税额对应的计算区间
38     */
39     for( range = 1; income > income_limit[ range ]; ++ range )
40         ;
41     range --;
42     
43     /*
44     ** 税额计算公式
45     */
46     tax = base_tax[ range ] + ( income - income_limit[ range ] ) * percentage[ range ];
47     
48     return tax;
49 }

 

posted on 2014-12-10 11:21  丝工木每  阅读(289)  评论(0编辑  收藏  举报

导航