當前位置:編程學習大全網 - 編程軟體 - 簡單的C語言編程問題。。。

簡單的C語言編程問題。。。

1. 邏輯錯了,少於3500時,國家不會倒補錢的,必需單列出來,此時交稅為0

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;

}

  • 上一篇:有道和高途的區別
  • 下一篇:怎樣學習web前端 w3school 知乎
  • copyright 2024編程學習大全網