1. 问题描述
工资计算本质上就是分段函数,思想很简单。
2. 代码实现
采用C++语言,代码出自Smart-C++常用代码库:
#include
double sal2tax(double salary) {
salary -= 2000;
double tax = 0;
double sal[][2] = {
{0, 0.05},
{500, 0.1},
{2000, 0.15},
{5000, 0.2},
{20000, 0.25},
{40000, 0.3},
{60000, 0.35},
{80000, 0.4},
{100000, 0.45}
};
for(int i = 0; i < 8; ++i) {
if(salary < sal[i][0])break;
double t = ((salary - sal[i][0]) > (sal[i + 1][0] - sal[i][0]) ?
(sal[i + 1][0] - sal[i][0]) : (salary - sal[i][0])) * sal[i][1];
tax += t;
}
return tax;
}
double tax2sal(double tax) {
double sal_h = 80000;
double sal_l = 0;
while(sal_h > sal_l) {