个税的计算C语言实现,结果为什么是负的?0
/*运算结果: please input your profit every month 9876 the tax of 9876 is -479.80 请按任意键继续. . . 为什么是负的? */ #include"stdio.h" #define TAXBASE 3500 struct Taxtable{ long tax_start; long tax_end; double taxrate; ... /*运算结果:
please input your profit every month
9876
the tax of 9876 is -479.80
请按任意键继续. . .
为什么是负的?
*/
#include"stdio.h"
#define TAXBASE 3500
struct Taxtable{
long tax_start;
long tax_end;
double taxrate;
};
int main(void)
{
int a;
struct Taxtable *p;
double CaculateTax(struct Taxtable *,double,int);
double profit;
struct Taxtable taxtable[]={
{0,1500,0.03},
{1500,4500,0.1},
{4500,9000,0.2},
{9000,35000,0.25},
{35000,55000,0.3},
{55000,80000,0.35},
{80000,1e9,0.45},
};
p=taxtable;
a=sizeof(taxtable)/sizeof(struct Taxtable);
printf("please input your profit every month\n");
scanf("%lf",&profit);
printf("the tax of %.0lf is %.2lf\n",profit,CaculateTax(p,profit,a));
return 0;
}
double CaculateTax(struct Taxtable *p,double profit,int n)
{
int i;
double tax=0.0;
profit-=TAXBASE;
if(profit>0)
{
for(i=0;i
{
if(profit>(p+i)->tax_end)
tax+=((p+i)->tax_end-(p+i)->tax_start)*(p+i)->taxrate;
else
tax+=(profit-(p+i)->tax_start)*(p+i)->taxrate;
profit-=(p+i)->tax_end;
if(profit>0);
else
break;
}
}
else
tax=0;
return tax;
} 展开