C++题目实验四Word下载.docx

上传人:b****5 文档编号:19281596 上传时间:2023-01-05 格式:DOCX 页数:21 大小:20.99KB
下载 相关 举报
C++题目实验四Word下载.docx_第1页
第1页 / 共21页
C++题目实验四Word下载.docx_第2页
第2页 / 共21页
C++题目实验四Word下载.docx_第3页
第3页 / 共21页
C++题目实验四Word下载.docx_第4页
第4页 / 共21页
C++题目实验四Word下载.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

C++题目实验四Word下载.docx

《C++题目实验四Word下载.docx》由会员分享,可在线阅读,更多相关《C++题目实验四Word下载.docx(21页珍藏版)》请在冰豆网上搜索。

C++题目实验四Word下载.docx

classbinary{//定义二进制类

charbits[16];

//二进制字模数组

public:

binary(char*);

//字符串参数构造函数

binary(int);

//整型参数构造函数

friendbinaryoperator+(binary,binary);

//重载“+”

friendbinaryoperator-(binary,binary);

//重载“-”

operatorint();

//类类型转换函数

voidprint();

主函数设计如下:

intmain()

binaryn1="

1011"

;

binaryn2=int(n1)+15;

binaryn3=n1-binary(7);

n1.print();

n2.print();

n3.print();

cout<

<

int(n2)+5<

endl;

n2-binary(5)<

n3+binary(5)<

int(n3)-5<

return0;

}

0000000000001011

0000000000011010

0000000000000100

31

21

9

-1

窗体顶端

3. 

二进制类

(2)——运算符重载

在上一题的基础上,将+、-运算符定义为binary类的成员函数。

并且重载运算符~、&

、|,分别将二进制数按位取反、数按位与及按位或。

binaryn4=n1&

n2;

binaryn5=n1|n2;

binaryn6=~n1;

n4.print();

n5.print();

n6.print();

0000000000001010

0000000000011011

111111*********0

4. 

图形类——继承和派生

定义一个图形类,其中有保护类型的成员数据:

高度和宽度,一个公有的构造函数。

由该图形类建立两个派生类:

矩形类和等腰三角形类。

在每个派生类中都包含一个函数Area(),分别用来计算矩形和等腰三角形的面积。

提示:

classpic

classrecg:

publicpic

classtag:

输入矩形的长和宽以及等腰三角形的底边长和高。

矩形的面积和等腰三角形的面积

35

15

7.5

5. 

人员管理信息系统——继承与派生

阅读以下程序,并调试运行。

#include<

iostream>

cstring>

usingnamespacestd;

classemployee

protected:

char*name;

//姓名

intindividualEmpNo;

//个人编号

intgrade;

//级别

floataccumPay;

//月薪总额

staticintemployeeNo;

//本公司职员编号目前最大值

employee();

//构造函数

~employee();

//析构函数

voidpay();

//汁算月薪函数

voidpromote(int);

//升级函数

voiddisplayStatus();

//显示人员信息

classtechnician:

publicemployee 

//兼职技术人员类

private:

floathourlyRate;

//每小时酬金

intworkHours;

//当月工作时数

technician();

//计算月薪函数

classsalesman:

virtualpublicemployee 

//兼职推销员类

floatCommRate;

//按销售额提取酬金的百分比

floatsales;

//当月销售额

salesman();

classmanager:

//经理类

floatmonthlyPay;

//固定月薪数

manager();

classsalesmanager:

publicmanager,publicsalesman 

//销售经理类

salesmanager();

intemployee:

:

employeeNo=1000;

//员工编号基数为1000

employee:

employee()

charnamestr[50];

//输入雇员姓名时首先临时存放在namestr中

"

请输入下一个雇员的姓名:

cin>

>

namestr;

name=newchar[strlen(namestr)+1];

//动态申请用于存放姓名的内存空间

strcpy(name,namestr);

//将临时存放的姓名复制到name

individualEmpNo=employeeNo++;

//新输入的员工,编号为目前最大编号加1

grade=1;

//级别初值为1

accumPay=0.0;

//月薪总额初值为0

~employee()

delete[]name;

//在析构函数中删除为存放姓名动态分配的内存空间

voidemployee:

pay() 

//计算月薪,空函数

promote(intincrement)

grade+=increment;

//升级,提升的级数由increment指定

displayStatus() 

//显示入员信息,空函数

technician:

technician()

hourlyRate=100;

//每小时酬金100元

voidtechnician:

pay()

请输入"

name<

本月的工作时数:

workHours;

accumPay=hourlyRate*workHours;

//计算月薪,按小时计酬

兼职技术人员"

编号"

individualEmpNo

本月工资"

accumPay<

displayStatus()

级别为"

grade<

级,已付本月工资"

salesman:

salesman()

CommRate=0.04;

//销售提成比例4%

voidsalesman:

本月的销售额:

sales;

accumPay=sales*CommRate;

//月薪=销售提成

推销员"

manager:

manager()

monthlyPay=8000;

//固定月薪80m元

voidmanager:

accumPay=monthlyPay;

//月薪总额即固定月薪数

经理"

salesmanager:

salesmanager()

monthlyPay=5000;

CommRate=0.005;

voidsalesmanager:

所管辖部门本月的销售总额:

accumPay=monthlyPay+sales*CommRate;

//月薪=固定月薪+销售提成

销售经理"

managerm1;

techniciant1;

salesmanagersm1;

salesmans1;

m1.promote(3);

//经理m1提升3级

m1.pay();

m1.displayStatus();

t1.promote

(2);

t1.pay();

t1.displayStatus();

sm1.promote

(2);

sm1.pay();

sm1.displayStatus();

s1.pay();

s1.displayStatus();

wang

li

zhang

liu

1

12

13

经理wang编号1000本月工资8000

经理wang编号1000级别为4级,已付本月工资8000

请输入li本月的工作时数:

兼职技术人员li编号1001本月工资100

兼职技术人员li编号1001级别为3级,已付本月工资100

请输入zhang所管辖部门本月的销售总额:

销售经理zhang编号1002本月工资5000.06

销售经理zhang编号1002级别为3级,已付本月工资5000.06

请输入liu本月的销售额:

推销员liu编号1003本月工资0.52

推销员liu编号1003级别为1级,已付本月工资0.52

6. 

构造析构函数——继承

阅读下面的程序,请编写一个简单的主函数,使其满足对应的输出要求。

classCBase1

intx;

CBase1()

{x=0;

cout<

调用构造函数CBase1()!

\n"

CBase1(inta)

{x=1;

调用构造函数CBase1(int)!

~CBase1(){cout<

调用析构函数~CBase1()!

classCBase2

inty;

CBase2()

{y=0;

调用构造函数CBase2()!

CBase2(inta)

{y=a;

调用构造函数CBase2(int)!

~CBase2(){cout<

调用析造函数~CBase2()!

classA

intx;

A(){x=0;

调用构造函数A()!

A(inta){x=a;

调用构造函数A(int)!

~A(){cout<

调用析构函数~A()!

classCDerived:

publicCBase1,virtualpublicCBase2

Aa;

CDerived()

{cout<

调用构造函数CDerived()!

CDerived(intx,inty,intz):

a(x),CBase1(y),CBase2(z)

调用构造函数CDerived(int,int)!

~CDerived(){cout<

调用析造函数~CDerived()!

main()函数结束!

7. 

水果超市管理系统—4—继承与派生

水果超市管理系统采用面向对象的程序设计方法开发,继承机制是面向对象程序设计最重要的特征之一,在水果超市管理系统的设计过程中运用继承方法由已有类派生出新类,实现了代码重用。

水果超市的水果分为正价水果和特价水果,它们都是具体的水果,具有水果的特征和属性。

在上次实验中我们实现了水果类Fruit的定义,现在可以通过继承方法由水果类派生出“正价水果类(RegularFruit)”和“特价水果类(DiscountFruit)”。

“正价水果类”RegularFruit由“水果类”Fruit派生得来。

除了继承水果类原有的成员外,还新添加了正常售价数据成员,以及相应的构造函数和修改、提取正常售价的成员函数,并对继承自基类的显示水果信息的函数DispFruit()进行了重写。

“特价水果类”DiscountFruit由“水果类”Fruit派生得来。

特价水果类除了继承水果类原有的成员外,还新添加了原价和折扣价两个数据成员,以及相应的构造函数和显示、修改、提取折扣价的成员函数等,并对继承自基类的显示水果信息的函数DispFruit()进行了重写。

为了进行验证,设计如下主函数,在主函数部分进行验证。

RegularFruitr1(101,"

国光苹果"

1.5,2.0),r2;

r1.DispFruit();

r2.SetFruitName("

玫瑰香葡萄"

);

r2.SetFruitNumber(102);

r2.SetPurchasePrice(3.0);

r2.SetRegularPrice(3.5);

r2.DispFruit();

DiscountFruitd1(201,"

巨峰葡萄"

1.8,2.5,2.0),d2;

d1.DispFruit();

d2.SetFruitName("

黄金帅苹果"

d2.SetFruitNumber(202);

d2.SetPurchasePrice(1.2);

d2.SetOriginalPrice(1.8);

d2.SetDiscountPrice(1.5);

d2.DispFruit();

在主函数验证部分分别调用正价水果类重载的构造函数创建函数创建有参和无参的两个对象r1和r2,调用特价水果类重载的构造函数创建有参和无参的对象d1和d2进行验证。

派生类对象既可以调用派生类中新声明的公有成员,也可以调用从基类继承来的公有成员。

当通过派生类对象r1和r2调用DispFruit()函数时,执行的是派生类RegularFruit中重写的函数,从而可以精确输出正价水果的属性。

通过d1和d2调用DispFruit()函数时,执行的是DiscountFruit类中重写的函数,因此输出的是特价水果的属性。

正价水果编号:

101,名称:

国光苹果,售价:

2

102,名称:

玫瑰香葡萄,售价:

3.5

特价水果编号:

201,名称:

巨峰葡萄,原价:

2.5,现价:

202,名称:

黄金帅苹果,原价:

1.8,现价:

1.5

8. 

登山人选问题——深度优先搜索(选作题)

攀登一座高山,假定匀速前进,从山脚登到山顶需走N天,下山也需N天。

山上没有水和食品,给养要靠登山队员携带,而每个队员所携带的给养量要少于他登顶再返回山脚所消耗的给养量。

因此,一定要组成一个登山队,在多人支持的情况下,保证有一个登顶。

现在登山俱乐部有P个人待选,我们将P个人依次编号为k=1,2,...,P,令E[k]表示编号为k的人每日消耗的给养量,M[k]表示编号为k的人最多可携带的给养量。

登山计划要求登山队所有成员同时出发,其中一些人分别在启程若干天后返回,最终保证出发N天后至少有一人登顶,出发2N天后所有人都返回山脚,无人滞留山上。

编程要求:

用键盘输入天数N(N<

10)、俱乐部人数P(P<

10),之后依次输入E[k]和M[k],k=1,2,...,P,分别输出两个登山组队计划。

计划1:

要求参加登山的人数最少,在满足这一条件之下消耗的总给养量最少。

计划2:

要求消耗的总给养量最少(人数不限)。

有多少队员参加登山,消耗的总给养量,在出发时每人分别携带多少给养,每人分别在出发几天后返回(几天后开始下山)。

题目数据保证有解。

计划1中由2个人组队,分别携带18和24的给养量,分别在出发6天和3天后返回。

计划2中由3个人组队,3人分别携带18、17和3的给养量,分别在出发后6天、3天和1天之后返回。

66

122233

7817182225

242

1824

63

338

18173

631

9. 

三色二叉树——二叉树(选做题)

一棵二叉树可以按照如下规则表示成一个由0、1、2组成的字符序列,我们称之为“二叉树序列S”:

S=0表示该树没有子节点,S=1S1表示该树有一个子节点,S1为其子树的二叉

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1