2. 沒理解速算扣除的意思,公式用搞錯了,如:
7 超過80000的部分 45% 13505
計算公式是: (工資 - 起征點)× 對應稅率 - 速算扣除數
C語方表達即: y = (x-3500)*0.45-13505;
妳看看妳那計算方法,哪裏有利用了速算公式啊,又臭又長又不對
////妳原來的思路修改的:
#include <math.h>
#include <stdio.h>
int main ()
{
double x,y;
scanf ("%lf",&x);
if(x<=3500) //不夠起征點的不交稅
y = 0.0;
else if(x<=5000)
y=(x-3500)*0.03;
else if(x<=8000)
y=(x-3500)*0.1-105;
else if(x<=12500)
y=(x-3500)*0.2-555;
else if(x<=38500)
y=(x-3500)*0.25-1005;
else if(x<=58500)
y=(x-3500)*0.3-2755;
else if(x<=83500)
y=(x-3500)*0.35-5505;
else
y=(x-3500)*0.45-13505;
printf ("%.0lf\n",y);
return 0;
}
我另寫壹個改進算法和數據結構的:
#include <math.h>
#include <stdio.h>
int main ()
{
double x,y;
int i;
int shuilv[][3]={ //稅率表: 上限, 稅率%, 速算扣除
{3500, 0, 0},
{5000, 3, 0},
{8000, 10,105},
{12500,20,555},
{38500,25,1005},
{58500,30,2755},
{83500,35,5505},
{0, 45,13505},
};
scanf ("%lf",&x);
for(i=0; i<7 && shuilv[i][0] < x; i++);
y = (x-3500.0)*shuilv[i][1]/100.0 - shuilv[i][2];
printf ("%.0lf\n",y);
return 0;
}