匿名用户
1级
2011-12-15 回答
#include
#define TAXBASE 2000
typedef struct{
long base;
long limit;
double taxrate;
}TAXTABLE;
TAXTABLE TaxTable[] = {\
{0, 500, 0.05},\
{500, 2000, 0.10},\
{2000, 5000, 0.15},\
{5000, 20000, 0.20},\
{20000, 40000, 0.25},\
{40000, 60000, 0.30},\
{60000, 80000, 0.35},\
{80000, 100000, 0.40},\
{100000,1e10, 0.45},\
};
double CaculateTax(long profit)
{
int i;
double tax = 0.0;
profit -= TAXBASE;
for(i=0; i< sizeof(TaxTable)/sizeof(TAXTABLE); i++)
{
if( profit > TaxTable[i].base )
{
if( profit > TaxTable[i].limit )
{
tax += (TaxTable[i].limit - TaxTable[i].base) * TaxTable[i].taxrate;
}
else
{
tax += (profit - TaxTable[i].base) * TaxTable[i].taxrate;
}
profit -= TaxTable[i].limit;
printf("Base%d:%6ld Limit%d:%6ld Tax:%12.2f Leave:%6ld\n",i,TaxTable[i].base,i,\
TaxTable[i].limit, tax, (profit)>0 ? profit : 0);
}
}
return tax;
}
int main(void)
{
long profit;
double tax;
printf("Please enter your profit:");
scanf("%ld",&profit);
tax = CaculateTax(profit);
printf("Tax is: %12.2f\n",tax);
return 0;
}
流程图很简单,几个分支就好了,看下程序就会了
追问:
不行,编译失败的。运行不出来,我需要的是运行出来了,是以表格的形式,用几个人的名字来把他们的收入和税算出来。
追答:
这个可以运行
#include
void main()
{
int a,c;
float b,z=0;
printf("输入工资(元):");
scanf("%d",&a);
b=a-2000;
if(b<=500)
c=1;
else
if(b<=2000)
c=2;
else
if(b<=5000)
c=3;
else
if(b<=20000)
c=4;
else
if(b<=40000)
c=5;
else
if(b<=60000)
c=6;
else
if(b<=80000)
c=7;
else
if(b<=100000)
c=8;
else
if(b<=9998000)
c=9;
switch(c)
{
case 1:z=b*0.05;break;
case 2:z=b*0.10-25;break;
case 3:z=b*0.15-125;break;
case 4:z=b*0.20-375;break;
case 5:z=b*0.25-1375;break;
case 6:z=b*0.30-3375;break;
case 7:z=b*0.35-6375;break;
case 8:z=b*0.40-10375;break;
case 9:z=b*0.45-15375;break;
}
printf("应缴税为:%f",z);
}