首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一小段关于C++的代码,麻烦大家帮解答一下。多谢

2012-05-07 
一小段关于C++的代码,麻烦大家帮解答一下。谢谢题目要求为:假设某城市人人所得税的税基为2000元,而其征收个

一小段关于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;
}


[解决办法]
其实楼主我想提个问题。为什么工资是一个静态数据成员??静态数据成员属于类的,而不属于对象。既所有的对象共享一个静态数据。所以如果你定义那么多的对象,其实也就只有一个工资数据成员。

C/C++ code
#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;} 

热点排行