以下为标准解答程序(下文简称“标程”),请细心阅读:
#include <stdio.h>
int main()
{
int n,k,t;
unsigned nBase[]={0,500,2000,5000,20000,
40000,60000,80000,100000,-1};
while(scanf("%d%d", &n, &k), n>0||k>0) //数据输入
{
double sum = 0;
for(n-=k,t=0; (unsigned)n>nBase[t]; ++t)
{
sum += n - nBase[t];
}
printf("%.2lf\n", sum/20.0); //输出计算结果
}
return 0;
}
而事实上,你可能会问,是不是那个税率等间距递增才能使用这种方法。
那偶告诉你,其实不等间距递增也没有问题的,甚至递增和递减混合也行,
一样可以使用此办法化简得如上仅10行左右代码,并且可扩展性可以很好。
这个就留给读者您自己思考一下吧。