条件如下:
![](https://i-blog.csdnimg.cn/blog_migrate/f0654f45db0448ad901cdb09c537862b.png)
方法一
#include "stdio.h" //for printf
#include "conio.h" //for getch
void main()
{
printf("Please input your salary\n");
double salary;
scanf("%lf", &salary);
double tax;
if(salary < 0)
printf("input error!\n");
else
{
if(salary<=5000) //判断收入是否小于5000
{
tax = 0;
}
else if(salary>5000 && salary<=8000)
{
tax = (salary-5000) *0.03;
}
else if(salary>8000 && salary<=17000)
{
tax = (salary-8000)*0.1 + 90; //90即为8000的税
}
else if(salary>17000 && salary<=30000)
{
tax = (salary-17000)*0.20 + 990; //990即为17000的税
}
else if(salary>30000 && salary<=40000)
{
tax = (salary-30000)*0.25 + 3590; //3590即为30000的税
}
else if(salary>40000 && salary<=60000)
{
tax = (salary-40000)*0.30 + 6090; //6090即为40000的税
}
else if(salary>60000 && salary<=85000)
{
tax = (salary-60000)*0.35 + 12090; //12090即为60000的税
}
else //其他>85000情况
{
tax = (salary-85000)*0.45 + 20840; //20840即为85000的税
}
printf("%.2lf 's tax is %.2lf\n", salary, tax);
}
getch(); //暂停
}
方法二
利用函数调用(递归)
//利用函数调用(递归)
/
#include "stdio.h" //for printf
#include "conio.h" //for getch
double GetTax(double salary);
void main()
{
printf("Please input your salaray\n");
double salaray;
scanf("%lf", &salaray);
if(salaray < 0)
printf("input error!\n");
else
printf("%.2lf 's tax is %.2lf\n", salaray, GetTax(salaray));
getch(); //暂停
}
double GetTax(double salary)
{
if(salary <= 5000) return 0;
if(salary > 5000 && salary <= 8000)
return (salary - 5000) * 0.03;
else if(salary > 8000 && salary <= 17000)
return GetTax(8000) + (salary - 8000) * 0.10;
else if(salary > 17000 && salary <= 30000)
return GetTax(17000) + (salary - 17000) * 0.20;
else if(salary > 30000 && salary <= 40000)
return GetTax(30000) + (salary - 30000) * 0.25;
else if(salary > 40000 && salary <= 60000)
return GetTax(40000) + (salary - 40000) * 0.30;
else if(salary > 60000 && salary <= 85000)
return GetTax(60000) + (salary - 60000) * 0.35;
else
return GetTax(85000) + (salary - 85000) * 0.45;
}
方法二中的代码没有进行注释,请读者对照方法一中的代码自己分析。
最后,希望我的分享对你有所帮助,敬请关注,持续更新!