阶梯式个人所得税计算,一般做法就是大段的if...else...来计算最后的总税额。但是代码效果并不好,代码显得啰嗦,一旦税率,阶梯数量或阶梯收入发生变化,修改影响也比较多,可读性、可维护性、扩展性都不高。
可以考虑将阶梯及税率做成数组,然后用循环变量数组计算,代码简单,当税率、阶梯发生变化时,只需要修改数组即可,具体代码段无影响。
#include <stdio.h>
#include <stdlib.h>
#define R_SIZE 7
int main()
{
float g[R_SIZE] = {80000,55000,35000,9000,4500,1500,0};
float r[R_SIZE] = {0.45,0.35,0.3,0.25,0.2,0.1,0.03};
float income,s,tax = 0;
scanf("%f%f",&income,&s);
income -= s;
for(int i=0;i<R_SIZE;i++)
{
if(income >= g[i])
{
tax += (income - g[i])*r[i];
income = g[i];
}
}
printf("%.2f\n",tax);
system("pause");
return 0;
}