急啊 在线等 为什么结果是负的 那里错了?
计算个人所得税。个人所得税率表为:月收入1000元起征,超过起征点500元以内部分税率为5%,超过500元到2000元部分税率为10%,超过2000元到5000元部分税率为15%,超过5000元到20000元部分税率为20%,超过20000元到40000元部分税率为25%,超过40000元到60000元部分税率为30%,超过60000元到80000元部分税率为35%,超过80000元到100000元部分税率为40%,超过100000元部分税率为45%。我的结果是负的不知道为什么 有高手帮忙看看么?
#include<iostream>
using namespace std;
int m(int a,int b,int c,int k,int e,int j,int g,int h,int n)
{
double totle(0);
totle=500*a*0.05+1500*b*0.1+3000*c*0.15+20000*(k*0.2+e*0.25+j*0.3+g*0.35+h*0.4+n*0.45);
return totle;
}
int main(){
long f;
long s;
double totle=0;
cout<<"输入个人月收入s:"<<endl;
cin>>s;
cout<<"本月收入s:"<<s<<endl;
if (s<=1000)
totle=0;
else
f=s-1000;
if(f<=5000)
{
if(f>2000)
totle=500*0.05+1500*0.1+(f-2000)*0.15;
if(f<=500)
totle=f*0.5;
else
totle=500*0.05+(f-500)*0.1;
}
else
{
for(int i=5;(f/(i*20000))<1;i--)
{
switch(i)
{
case 1:m(1,1,1,1, (f-20000) ,0,0,0,0);
break;
case 2: m(1,1,1,1,1, (f-40000) ,0,0,0) ;
break;
case 3: m(1,1,1,1,1,1, (f-60000) ,0,0) ;
break;
case 4: m(1,1,1,1,1,1,1, (f-80000) ,0) ;
break;
case 5:m(1,1,1,1,1,1,1,1,(f-100000)) ;
break;
default :totle=0;
break;
}
}
}
cout<<"个人所得税:"<<totle<<endl;
return 0;
}
[[italic] 本帖最后由 忘记喧嚣 于 2007-12-5 10:27 编辑 [/italic]]