一小段关于C++的代码,麻烦大家帮解答一下。谢谢
题目要求为:
假设某城市人人所得税的税基为2000元,而其征收个人所得税的规定如下:不超过税基免征税,按超过税基部分征收所得税。超过部分在2000元以下,征税5%;5000元以下,征税10%;10000元以下,征税15%;10000元以上,征税20%。建立一个incomec类,共包含的数据成员和成员函数如下:
income数据成员,表示职工的实际收
wage静态数据成员,表示职工工资
taxrate静态数据成员,表示税率
setWage(double m)成员函数,设置工资值
getTaxrate()静态成员函数,计算税率
calIncome()静态成员函数,计算职工的实际收入
在主函数中,实例化不同的incomec类对象,并计算它们的实际收入。
我些了一个代码,在VC++6.0里面编译没错误,但是运行时候提示错误。新手楼主找不到哪里出了问题,麻烦大家帮我指正一下代码的错误之处。非常感谢!
我的代码:
#include <iostream>
using namespace std;
class incomec
{
private:
static double wage;
static double taxrate;
double income;
public :
static double setwage(double);
static double gettaxrate();
double callincome();
};
double incomec::setwage(double m)
{
wage=m;
cout<<wage;
return wage;
}
double incomec::gettaxrate()
{
if(wage<=2000)
taxrate=0;
if(0<=(wage-2000)&&(wage-2000)<=2000)
taxrate=0.05;
if(2000<(wage-2000)&&(wage-2000)<=5000)
taxrate=0.1;
if(5000<(wage-2000)&&(wage-2000)<=10000)
taxrate=0.15;
if(10000<(wage-2000))
taxrate=0.2;
cout<<taxrate;
return taxrate;
}
double incomec::callincome()
{
if(taxrate==0)
income=wage;
else
income=(wage-(wage-2000)*taxrate);
cout<<income;
return income;
}
void main()
{
incomec wer;
wer.setwage(9000);
cout<<"Louis的工资为:"<<wer.setwage(9000)<<endl;
cout<<"Louis的税率为:"<<wer.gettaxrate()<<endl;
cout<<"Louis的实际收入为:"<<wer.callincome<<endl;
}
[解决办法]
其实楼主我想提个问题。为什么工资是一个静态数据成员??静态数据成员属于类的,而不属于对象。既所有的对象共享一个静态数据。所以如果你定义那么多的对象,其实也就只有一个工资数据成员。
#include <iostream>using namespace std;class incomec{private: static double wage; static double taxrate; double income;public : static double setwage(double); static double gettaxrate(); double callincome();};double incomec::wage = 10000;double incomec::taxrate = 0.05;double incomec::setwage(double m){ wage=m; cout<<wage; return wage;}double incomec::gettaxrate(){ if(wage<=2000) taxrate=0; if(0<=(wage-2000)&&(wage-2000)<=2000) taxrate=0.05; if(2000<(wage-2000)&&(wage-2000)<=5000) taxrate=0.1; if(5000<(wage-2000)&&(wage-2000)<=10000) taxrate=0.15; if(10000<(wage-2000)) taxrate=0.2; cout<<taxrate; return taxrate;}double incomec::callincome(){ if(taxrate==0) income=wage; else income=(wage-(wage-2000)*taxrate); cout<<income; return income;}void main(){ incomec wer; wer.setwage(9000); cout<<"Louis的工资为:"<<wer.setwage(9000)<<endl; cout<<"Louis的税率为:"<<wer.gettaxrate()<<endl; cout<<"Louis的实际收入为:"<<wer.callincome()<<endl;}