C面向对象程序设计教程第3版陈维兴林小茶课后习题集答案解析

上传人:鲁** 文档编号:469677841 上传时间:2023-06-14 格式:DOC 页数:77 大小:142.50KB
返回 下载 相关 举报
C面向对象程序设计教程第3版陈维兴林小茶课后习题集答案解析_第1页
第1页 / 共77页
C面向对象程序设计教程第3版陈维兴林小茶课后习题集答案解析_第2页
第2页 / 共77页
C面向对象程序设计教程第3版陈维兴林小茶课后习题集答案解析_第3页
第3页 / 共77页
C面向对象程序设计教程第3版陈维兴林小茶课后习题集答案解析_第4页
第4页 / 共77页
C面向对象程序设计教程第3版陈维兴林小茶课后习题集答案解析_第5页
第5页 / 共77页
点击查看更多>>
资源描述

《C面向对象程序设计教程第3版陈维兴林小茶课后习题集答案解析》由会员分享,可在线阅读,更多相关《C面向对象程序设计教程第3版陈维兴林小茶课后习题集答案解析(77页珍藏版)》请在金锄头文库上搜索。

1、 C+面向对象程序设计教程课后题答案1.1 什么是面向对象程序设计?面向对象程序设计是一种新的程序设计X型.这种X型的主要特征是:程序=对象+消息面向对象程序的根本元素是对象。主要构造特点是:第一, 程序一般由类的定义和类的使用两局部组成;第二, 程序中的一切操作都是通过向对象发送消息来实现的。1.2 什么是对象?什么是类?对象与类之间的关系是什么?对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。类就是具有一样的数据和一样的操作的一组对象的集合,也就是说,类是对具有一样数据构造和一样操作的一类对象的描述。类和对象之间的关系是抽象和具体的关系。类是多个对象进展综合抽象的

2、结果,一个对象是类的一个实例。1.3 现实世界中的对象有哪些特征?请举例说明。现实世界中的对象具有以下特征:1) 每一个对象必须有一个名字以区别于其他对象;2) 用属性来描述对象的某些特征;3) 有一组操作,每组操作决定对象的一种行为;4) 对象的行为可以分为两类:一类是作用于自身的行为,另一类是作用于其他对象的行为。例如一个教师是一个对象。每个教师对象有自己的名字来和别的教师区别。教师具有编号,某,年龄,职称,专业等属性。教师拥有走路,吃饭,授课等行为操作。走路,吃饭是作用于自身的行为,授课是作用于其他对象的行为。1.4 什么是消息?消息具有什么性质?一个对象向另一个对象发出的请求成为“消息

3、。消息具有以下3个性质:1) 同一个对象可以接收不同形式的多个消息,做出不同的相应;2) 一样形式的消息可以传递给不同的对象,所做出的响应可以是不同的;3) 对消息的响应并不是必须的,对象可以响应消息,也可以不响应。1.5 什么是抽象和封装?请举例说明。抽象是将有关事物的共性归纳、集中的过程。例如:把所有具有大学生学籍的人归为一类,成为“大学生,这就是一个抽象。封装是指把数据和实现操作的代码集中起来放在对象内部,并尽可能隐藏对象的内部细节。例如:每一台洗衣机都有出厂日期、机器编号等属性,也有启动、暂停、选择等操作。人们在使用洗衣机的时候只需要按下对应的按钮,而不用关心具体的内部实现。这就是封装

4、。1.6 什么是继承?请举例说明。继承就是允许派生类使用基类的数据和操作,同时,派生类还可以增加新的操作和数据。例如:哺乳动物是一种热血、有毛发、用奶哺育幼崽的动物; 狗是有犬牙、食肉、特定的骨骼构造、群居的哺乳动物。 狗就继承了哺乳动物。1.7 假设类之间具有继承关系,那么他们之间具有什么特征?假设类之间具有继承关系,那么他们之间具有以下几个特征:1) 类间具有共享特征包括数据和操作代码的共享;2) 类间具有差异或新增局部包括非共享的数据和操作代码;3) 类具有层次构造。1.8 什么是单继承、多继承?请举例说明。单继承是指每个派生类只直接继承了一个基类的特征。例如狗继承自哺乳动物。多继承是指

5、多个基类派生出一个派生类的继承关系。比方玩具车同时继承自玩具和车。1.9 什么是多态?请举例说明。多态是指不同的对象收到一样的消息时执行不同的操作。例如,有一个窗口类对象,还有一个棋子类对象。当我们发出“移动消息时,两个对象的行为不同。1.10 面向对象程序设计的主要优点是什么?1. 可提高程序的重用性;2. 可控制程序的复杂性;3. 可改善程序的可维护性;4. 能够更好地支持大型程序设计;5. 增强了计算机处理信息的X围;能够很好地适应新的硬件环境。2.1 简述C+的主要特点。1) C+是C的超集,保持与C的兼容。2) 保持了C的简洁、高效和接近汇编语言等特点,并对C的功能作了不少扩大。用C

6、+编写的程序比C更平安,可读性更好,代码构造更为合理。3) 程序质量高。4) 增加了面向对象机制。2.2#include usingnamespace std;int main()int a, b, d, min;cout a b;min= a b ?b : a;for(d = 2; d min; d+) if(a % d) = 0) & (b % d ) = 0) break; if (d = min) coutNo mon denominators endl;return0; coutThe lowest mon denominator is d endl;return0;2.3 有效2.

7、4 没有函数声明; 函数定义没有写返回值类型。2.5 1等价,函数声明可以省略参数的名字。 2不等价,第二个的函数定义不能省略参数的名字。2.6-2.10 CDAAB2.11-2.15 ACBDC2.16-2.17 DC2.181012.1910 102.2010202.21 举例说明可以使用const替代#define以消除#define的不平安性。#include usingnamespace std;int main()int a = 1;#define T1 a+a#define T2 T1-T1coutT2 is T2 endl;return0;上面这个程序,初看应该输出 T2 is

8、 0但是实际上,得出T2 is 2如果把#define换成const, 那么可以输出想要的结果。2.22 用动态分配空间的方法,计算Fibonacci数列的前20项,并存储到动态分配的空间中。#include usingnamespace std;int main()int *pi = newint20;*pi = 1;pi1 = 1;for(int i = 2; i 20; i+) pii = pii - 2 + pii - 1; return0;2.23 重载sroot函数,输出一个数的二次方根。#include usingnamespace std;double sroot(int nu

9、m)return (double)sqrt(double)num);double sroot(long num)return (double)sqrt(double)num);double sroot (double num)return (double)sqrt(num);int main()return0;2.24 解决百钱问题。将一元人民币换成1、2、5分的硬币,有多少种换法?#include usingnamespace std;int main()int num = 0; /总共换法的总数。初始化为0。for(int i = 0; i = 100; i+) for(int j = 0

10、; j 100) break; for(int k = 0; k = 20; k+) if(i + 2*j + 5*k) = 100) num+; cout 1分 i 个;2分 j 个;5分 k 个;100) break; cout num endl;return0;2.25 输入两个整数,按由小到大的顺序输出。要求使用变量的引用。#include usingnamespace std;void swap(int&a, int&b) a = a + b; b = a - b; a = a - b;int main()int a, b;cin a b;if(a b) swap(a, b); co

11、ut a , b endl;return0;2.26 用二分法求解 f(x)=0的根。#include usingnamespace std;double Fun(double x)return35*x +25; /假设f(x)=35x+25int main()double a, b;cin a;if(Fun(a) = 0) coutx = a b; while (Fun(a) * Fun(b) = 0);if(Fun(b) = 0) coutx = b b) a = a + b; b = a - b; a = a - b; while(1) if(Fun(a + b)/2) = 0) coutx = (a + b)/2 endl;return0; if(Fun(a) * Fun(a + b)/2) 0) b = (a + b)/2; if(Fun(b) * Fun(a + b)/2) 0) a = (a + b)/2; return0;3.1 类声明的一般格式是什么?class 类名 private: 私有数据成员和成员函数public: 公有数据成员和成员函数

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

当前位置:首页 > 建筑/环境 > 施工组织

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