南京邮电大学程序设计类课程教辅平台c++第五章编程题答案

第一题:
定义一个矩形类,其中包括如下内容:
保护数据成员: float length; float width; //矩形的长度和宽度
公有成员函数: 构造函数 //初始化矩形的长度与宽度
float area() //计算面积
void disp() //显式结果(矩形的面积)

利用矩形类为基类,公有派生长方体类,其中包括如下内容:
私有数据成员:float height; //长方体的高
公有成员函数:构造函数 //初始化长方体的高
float calv() //计算长方体的体积
void disp() //显式结果(底面积以及长方体的体积)

在主函数中,定义长方体对象并检验计算和显示功能。
参考程序:

#include<iostream>
using namespace std;
class JX 
{protected:
 float length;
 float width;
 public:
    JX(float length,float width);
 	float area();
 	void disp();
 };
JX::JX(float l,float w)
{length=l;
width=w;
}
float JX::area() 
{return length*width;
}
void JX::disp()
{cout<<JX::area();
}
class CFT :public JX
{public:
	float h;
	void disp();
CFT(float length=0,float width=0,float k=0)
: JX(length,width), h(k) {}
float calv() ;
 } ;
 float CFT::calv() 
 {return length*width*h;
 }
 void CFT::disp()
 {cout<<CFT::calv();
 }
 int main ( )

{float l;
float w;
float h;
cin>>l>>w>>h; 
JX a(l,w);
CFT b(l,w,h);
a.disp();
cout<<" ";
b.disp();
return 0;
}

第二题:
某公司财务部需要开发一个计算机雇员工资的程序,该公司有3类员工:
工人的工资为每小时工资额(通过成员函数设定)乘以当月工作时数(通过成员函数设定)再加上工龄工资;
销售员工资为每小时工资额(通过成员函数设定)乘以当月工作时数(通过成员函数设定)加上销售额提成再加上工龄工资,
其中销售额提成等于该销售员当月售出商品金额(通过成员函数设定)的1%;
管理人员工资为基本工资1000元再加上工龄工资。
工龄工资就是雇员在该公司工作的工龄每增加一年,月工资就增加35元。
请用面向对象方法分析、设计这个程序,并用C++语言写出完整程序。
设计基类Employee,定义如下:(剩余代码略)
参考程序:

#include<iostream>
#include<string.h>
using namespace std;
class Employee
{
protected:
	char name[30];
	int working_years;
public:
	Employee(const char nm[30] = "unnamed", int wy = 0)
	{
		strcpy(name, nm);
		working_years = wy;
	}
	char *Getname()
	{
		return name;
	}
	double ComputePay()
	{
		return 35 * working_years;
	}

	void SetWorkyears(int wy)
	{
		working_years = wy;
	}
};

class Worker :public Employee
{
private:
	double pay_per_hour;
	int work_time;
public:
	Worker(const char a[],int i,int x)
	{
		strcpy(name, a);
		working_years = i;
		work_time = x;
	}
	double count_pay()
	{
		return pay_per_hour * work_time + ComputePay();
	}
	void SetWorktime(int wt)
	{
		work_time = wt;
	}
	void Setpay_per_hour(int x)
	{
		pay_per_hour = x;
	}
};

class SalesPerson :public Employee
{
private:
	double pay_per_hour;
	double saleroom;
	int work_time;
public:
	
	SalesPerson(const char a[],int i,int x,int y)
	{
		strcpy(name, a);
		working_years = i;
		saleroom = x;
		work_time = y;
	}

	double count_pay()
	{
		return pay_per_hour * work_time + saleroom * 0.01 + ComputePay();
	}
	void SetWorktime(int wt)
	{
		work_time = wt;
	}
	void Setpay_per_hour(int x)
	{
		pay_per_hour = x;
	}
	void Setsalesroom(double sr)
	{
		saleroom = sr;
	}
};

class Manager :public Employee
{
public:
	double count_pay()
	{
		return 1000 + ComputePay();
	}
	Manager(const char a[], int y)
	{
		strcpy(name, a);
		working_years = y;
	}
};


int main()
{
	Worker work("zhangqiang", 3, 200);
	work.Setpay_per_hour(50);
	cout << "工资=" << work.count_pay() << endl;
	work.SetWorktime(180);
	work.SetWorkyears(10);
	work.Setpay_per_hour(30);
	cout << work.Getname() << "  " << work.count_pay() << endl;

	SalesPerson sales("wangjun", 5, 300000, 25);

	sales.SetWorktime(40);
	sales.Setpay_per_hour(80);
	sales.Setsalesroom(450000);
	cout << sales.Getname() << "  " << sales.count_pay() << endl;

	Manager mana("sunchao", 20);
	cout << mana.Getname() << "  " << mana.count_pay() << endl;
	getchar();
	return 0;
}

希望大家能给个点赞

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值