阶梯式个人所得税计算,一般做法就是大段的if...else...来计算最后的总税额。但是代码效果并不好,代码显得啰嗦,一旦税率,阶梯数量或阶梯收入发生变化,修改影响也比较多,可读性、可维护性、扩展性都不高。
可以考虑将阶梯及税率做成数组,然后用循环变量数组计算,代码简单,当税率、阶梯发生变化时,只需要修改数组即可,具体代码段无影响。
#include#include #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 = g[i]) { tax += (income - g[i])*r[i]; income = g[i]; } } printf("%.2fn",tax); system("pause"); return 0; }



