首都师范大学信息工程学院

上传人:子 文档编号:46876255 上传时间:2018-06-28 格式:PDF 页数:14 大小:195.23KB
返回 下载 相关 举报
首都师范大学信息工程学院_第1页
第1页 / 共14页
首都师范大学信息工程学院_第2页
第2页 / 共14页
首都师范大学信息工程学院_第3页
第3页 / 共14页
首都师范大学信息工程学院_第4页
第4页 / 共14页
首都师范大学信息工程学院_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《首都师范大学信息工程学院》由会员分享,可在线阅读,更多相关《首都师范大学信息工程学院(14页珍藏版)》请在金锄头文库上搜索。

1、首都师范大学信息工程学院面向对象习题类与对象的封装性- 1-注意注意:每道题的难度等级不同每道题的难度等级不同,*越多越多,难度等级越高难度等级越高。可以根据自己的能力可以根据自己的能力,选做恰当难选做恰当难 度的题度的题。3.1 几何图形类 Geometry 的类图和定义如下:enum Figure Circle, Rectangle;/ 自定义枚举常量,用于定义几何图形类别 class Geometry private: double V1, V2;/ 根据几何图形的不同存放描述图形的参数: / Circle:只需要用 V1 保存圆的半径值; / Rectangle:需要用 V1 和 V2

2、 分别保存矩形的长和宽 Figure figuretype;/ 指定几何图形的类型:Circle 或 Rectangle public: Geometry(double radius); / 构造圆形:V1 = radius, figuretype = Circle Geometry(double length, double width); / 构造矩形:V1 = length, V2 = width, figuretype = Rectangle Geometry(); double Border() const;/ 依据图形类型计算并返回图形的周长 double Area() const

3、;/ 依据图形类型计算并返回图形的面积 double Diagonal() const;/ 依据图形类型计算并返回图形的对角线长度 Figure Type() const;/ 获取并返回图形的类型 ;要求要求: 1. 在类定义外部实现类 Geometry 的构造函数和其他成员函数的定义。 2. 编制一个主函数, 由用户通过键盘输入一个 double 类型值 r, 用此数据产生一个圆、 圆的外切矩形和矩形的外接圆如下:CGeometry- V1:double - V2:double - figuretype:Figure+Geometry() +Geometry(in length:double

4、, in width:double) +Geometry() +Border():doubleconst +Area():doubleconst +Diagonal():doubleconst首都师范大学信息工程学院面向对象习题类与对象的封装性- 2-然后对所产生的圆形和矩形进行如下操作: 按照图示从外向内顺序计算并格式显示每个图形的周长、面积和对角线; 计算并格式显示两个圆之间的环的面积; 计算并格式显示图示中标以 X 的弓形区域的周长和面积。提示提示: 在主函数 main()中首先根据键盘输入的 r 值,按照要求中的几何图形关系,创建相应 的 Geometry 的对象。然后使用这些所创建的

5、 Geometry 对象,计算所要求的结果。难度等级难度等级:*rX首都师范大学信息工程学院面向对象习题类与对象的封装性- 3-3.2 试设计一个类用于对整数进行判别, 并根据判别的结果分别统计所判别过的正整数和负 整数的个数,并能格式显示其统计结果。 1. 建议该类可以命名为 Stat。 2. 为了存放所判别过的正、负整数个数的统计结果,该类应有两个私有整型数据成员, 成员名可以命名为 positiveCount 和 negativeCount。 3. 该类需要一个无参数的构造函数,构造该类对象时必须将存放正、负整数个数的统 计结果的两个私有整型数据成员的初始值设置为 0。 4. 该类应拥有

6、一个接口成员函数为 Check(int n), 用于判别一个整数参数 n 是正整数 还是负整数,并分别累计已判别过的正、负整数的个数。 5. 该类还应拥有另一个接口成员函数 Show(),用于格式显示统计结果。例如,显示格 式和内容可以按如下所示: 所判别的整数共所判别的整数共 XXX 个个 其中正整数其中正整数 XXX 个个,负整数负整数 XXX 个个要求要求: 1. 实现类 Stat 的定义和各个成员函数的定义; 2. 定义 1 个类外全程函数 CheckInputValue,该函数的原型声明如下: void CheckInputValue(int in, int num, Stat st

7、at); 该函数的功能是使用 Stat 类对象 stat 对具有 num 个元素的整型数组 in中的数据 依次判别,并统计数组元素中的正、负数个数。 3. 编制主函数实现以下功能: 从键盘输入至少 20 个(正/负)整数,将它们存放在一个预先定义的整型数组中。 创建一个 Stat 类对象,用于对输入的所有整数的判别统计,即将存放输入整数的 数组、数组元素个数和所创建的 Stat 类对象为实参调用 CheckInputValue,并调 用之后显示判别 Stat 类对象对数组元素的统计结果; 将函数 CheckInputValue 的定义修改为: void CheckInputValue(int

8、in, int num, Stat 再次编译执行程序,检查 CheckInputValue 的定义修改后对数组元素的统计结果 有什么不同?为什么?哪一个函数版本的统计结果是正确的? 4. 要求编写编程文档,文档内容包括: Stat 类图 Stat 类定义描述 类成员函数 Check 和全程类外函数 CheckInputValue 的实现算法描述 main()函数的流程图难度等级难度等级:*首都师范大学信息工程学院面向对象习题类与对象的封装性- 4-3.3 记录一个学生的平均分数的简单类 Grade 声明如下: class Grade char *name;/ 学生姓名 float score;

9、/ 平均分数 public: Grade(char student, float s);/ name = student, score = s Grade();/ 缺省设置 name = 0,score = 0.0。 Grade();/ 对象析构时,必须检查 name 属性的状态,如 / 果已经指向动态分配的内存空间,则应该回收 / 该内存空间,避免内存泄露。 bool Compare(char s);/ 比较 name 是否与输入参数 s 相同。如果比较 / 结果相同函数返回 true,否则返回 false。 void Read();/ 从键盘读入字串和浮点数为属性name和score /

10、赋值(注意友好的输入提示) 。 void Show();/ 格式输出 name 和 score 的属性值。 ;要求要求: 1. 编写类 Grade 的各成员函数的实现代码。 2. 编写类外函数 Search 用于搜索具有一个具有 n 个 Grade 对象元素的数组 Arr 是否 存在 name 值与键值 keyname 匹配的 Grade 对象元素。如果存在,则返回该元素 在数组中的索引值,如果不存在,则返回- 1。该函数的原型声明如下: int Search(Grade Arr, int n, char keyname); 3. 在主函数中创建和使用 Grade 类型对象实现如下操作: 声明

11、一个含 5 个 Grade 类型对象的数组 Student。该数组的前 4 个元素 Student0 -Student3的属性 name 和 score 在定义时被分别初始化为: (“ John” , 78.3),(“ Sally” , 86.5),(“ Bob” , 58.9)和(“ Donna” , 98.3);而第 5 个元素 Student4的 name 和 score 是通过键盘输入被初始化为(“ Henry” , 92.5)的。 编写一段代码用于实现以下功能: 从键盘输入一个字符串,如果输入串不是空串,则搜索 Student 数组中是否存 在姓名与输入串匹配的 Grade 对象,

12、并根据搜索的匹配结果显示相应的信息 (若 匹配成功, 显示搜索到 Grade 对象的信息; 若匹配失败, 显示恰当的错误提示) ; 如果输入串是空串,则程序结束。 4. 要求编写编程文档,文档内容包括: Grade 类图 Grade 类定义描述 类成员函数 Read 和全程类外函数 Search 的实现算法描述 main()函数的流程图提示提示: 1. 声明 Grade 类型对象的数组 Student 的同时, 对其中的元素进行指定的初始化的操 作与预定义类型数组在声明时对元素的初始化相同,因此 Student 的声明代码可以 写为:首都师范大学信息工程学院面向对象习题类与对象的封装性- 5-

13、Grade Student5 = Grade(“ John” , 78.3), Grade(“ Sally” , 86.5), Grade(“ Bob” , 58.9), Grade(“ Donna” , 98.3); 2. 在成员函数 Read 的定义中,应注意对 name 的判断:如果 name 0,表明此时 name 已经指向了一个已经动态分配的空间,应该使用 delete将此空间回收,再 对 name 重新动态分配空间,用于保存从键盘输入的学生姓名字串。 3. 注意使用 cin.getline 从键盘获取字符串。通过键盘输入空串的方法是键入复合键 Ctrl+Z。难度等级难度等级:*首都

14、师范大学信息工程学院面向对象习题类与对象的封装性- 6-3.4 如图所示,椭圆形可以由边长分别为 2a 和 2b 的外切矩形确定。常数 a 和 b 被称为椭圆的半轴,椭圆的数学方程为: (x x0)2/a2+ (y y0)2/b2= 1(其中 x0,y0 表示椭圆的圆心坐标) 椭圆的面积计算公式为 ab。 根据以上描述,试设计椭圆类 Ellipse 和矩形类 Rectangle。两个类分别具有确定尺寸 和形状的属性, 并能通过构造函数对这些属性初始化; 另外两个类还分别拥有用于计算 面积的成员函数 Area。 使用 Ellipse 和 Rectangle 的类对象解决以下建设成本的计算问题:

15、在一个 200feet X 150feet(feet = 英尺)的矩形区域内要建造如图所示两个椭圆形的 游泳池。游泳池的平均单位成本为$250/feet2,游泳池的四周要铺设水泥,其单位成本为 $0.50/feet2,试计算总造价。要求要求: 1. 设计和实现类 Ellipse 和 Rectangle。 2. 在主函数中创建必要的 Ellipse 和 Rectangle 类对象。使用这些类对象完成要求的 计算,并显示输出计算结果。 3. 要求编写编程文档,文档内容包括: 绘制 Ellipse 和 Rectangle 类图 Ellipse 和 Rectangle 类定义描述 main()函数的流

16、程图难度等级难度等级:*首都师范大学信息工程学院面向对象习题类与对象的封装性- 7-3.5 编写一个能模拟简单猜扑克牌大小游戏的应用程序。该游戏的名称为 Hi- Low,其玩法 和规则如下: 1. 玩法玩法 洗牌洗牌:每盘游戏开始之前,使扑克牌的排列顺序充分随机。 发牌发牌:每局开始时,从未使用的扑克牌集合中顺序发给玩家 5 张扑克牌(明牌) 。 猜点猜点:从未使用的扑克牌集合中按顺序取出一张扑克牌(即庄家的暗牌) ,要求 玩家将手中的第一张扑克牌和这张庄家的暗牌进行比较, 确定哪张牌大? 积分积分:玩家确定回答后,翻开被猜的扑克牌(暗牌变成明牌) ,同时根据玩家回 答的正确与否显示相应的提示, 并为玩家的游戏成绩积分。 然后将这两张 已经比较过的牌回收到已经使用过的扑克牌集合中, 玩家手中的下一张扑 克牌成为新的一张扑克牌。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号