个人所得税问题
编写一个计算个人所得税的程序,要求输入收入金额后,能够输出应缴的个人所得税,个人所得税的征收方法如下:起征点为3500元。
不超过1500元的部分,征收3%;
超过1500~4500元的部分,征收10%;
超过4500~9000元的部分,征收20%;
超过9000~35000元的部分,征收25%;
超过35000~55000元的部分,征收30%;
超过55000~80000元的部分,征收35%;
超过80000元以上的,征收45%。
对于题目中的条件,我们可以用结构体存放不同的税率,然后用一个for循环来遍历税率信息,再通过函数进行计算得出个人所得税。
#include<iostream>
using namespace std;
#define TAXBASE 3500
struct TaxTable//定义结构体
{
int start;
int end;
double taxrate;
};
double CaculateTax(struct TaxTable arr[],int profit)//定义求个人所得税的函数
{
double tax=0.0;
profit=profit-TAXBASE;
for(int i=0;i<sizeof(arr)/sizeof(TaxTable);i++)
{
if(profit<arr[i].start)
{
if(profit>arr[i].end)
{
tax=tax+(arr[i].end-arr[i].start)*arr[i].taxrate;
}
else
{
tax=tax+(profit-arr[i].start)*arr[i].taxrate;
}
profit=profit-arr[i].end;
cout<<"征税范围:"<<arr[i].start<<"~"<<arr[i].end
<<"该范围内缴税金额:"<<tax
<<"超出该范围的金额:"<<(profit)>0?profit:0;
}
}
return tax;
}
int main()
{
struct TaxTable arr[]={{0,1500,0.03},{1500,4500,0.10},{4500,9000,0.20},
{9000,35000,0.25},{35000,55000,0.30},
{55000,80000,0.35},{80000,1e10,0.45}};//定义结构体数组
int profit;
double tax;
cout<<"请输入个人收入金额:";
cin>>profit;
tax=CaculateTax(arr,profit);
cout<<"您的个人所得税为:"<<tax<<endl;
return 0;
}