ImageVerifierCode 换一换
格式:DOCX , 页数:46 ,大小:30.25KB ,
资源ID:8561781      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8561781.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++面向对象程序设计教程第3版陈维兴林小茶课后习题答案.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、C+面向对象程序设计教程第3版陈维兴林小茶课后习题答案 C+面向对象程序设计教程课后题答案1.1? 什么是面向对象程序设计面向对象程序设计是一种新的程序设计范型.这种范型的主要特征是:程序=对象+消息面向对象程序的基本元素是对象。主要结构特点是:第一,? 程序一般由类的定义和类的使用两部分组成;第二,? 程序中的一切操作都是通过向对象发送消息来实现的。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. 增强了计算机处理信息的范围;能够很好地适应新的硬件环境。2.1 简述C+的主要特点。1)? C+是C

6、的超集,保持与C的兼容。2)? 保持了C的简洁、高效和接近汇编语言等特点,并对C的功能作了不少扩充。用C+编写的程序比C更安全,可读性更好,代码结构更为合理。3)? 程序质量高。4)? 增加了面向对象机制。2.2#include using namespace 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) cout No common denominators endl; re

7、turn 0; cout The lowest common denominator is d endl; return 0;2.3 有效2.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 using namespace std;int main() int a

8、= 1;#define T1 a+a#define T2 T1-T1 cout T2 is T2 endl; return 0;上面这个程序,初看应该输出 T2 is 0但是实际上,得出T2 is 2如果把#define换成const, 则可以输出想要的结果。2.22 用动态分配空间的方法,计算Fibonacci数列的前20项,并存储到动态分配的空间中。#include using namespace std;int main() int *pi = new int20; *pi = 1; pi1 = 1; for(int i = 2; i 20; i+) pii = pii - 2 + pi

9、i - 1; return 0;2.23 重载sroot函数,输出一个数的二次方根。#include using namespace std;double sroot(int num) return (double)sqrt(double)num);double sroot(long num) return (double)sqrt(double)num);double sroot (double num) return (double)sqrt(num);int main() return 0;2.24 解决百钱问题。将一元人民币换成1、2、5分的硬币,有多少种换法?#include usi

10、ng namespace std;int main() int num = 0; /总共换法的总数。初始化为0。 for(int i = 0; i = 100; i+) for(int j = 0; 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; return 0;2.25 输入两个整数,按由小到大的顺序输出。要求使用变量的引用。#include using namespace std;v

11、oid 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); cout a , b endl; return 0;2.26 用二分法求解 f(x)=0的根。#include using namespace std;double Fun(double x) return 35*x +25; /假设f(x)=35x+25int main() double a, b; cin a; if(Fun(a) = 0) cout x = a b; while

12、 (Fun(a) * Fun(b) = 0); if(Fun(b) = 0) cout x = b b) a = a + b; b = a - b; a = a - b; while(1) if(Fun(a + b)/2) = 0) cout x = (a + b)/2 endl; return 0; if(Fun(a) * Fun(a + b)/2) 0) b = (a + b)/2; if(Fun(b) * Fun(a + b)/2) 0) a = (a + b)/2; return 0;3.1 类声明的一般格式是什么class 类名 private: 私有数据成员和成员函数 public

13、: 公有数据成员和成员函数3.2 构造函数和析构函数的主要作用是什么?它们各自有什么特性?? 构造函数是一种特殊的成员函数,它主要用于为对象分配空间,进行初始化。构造函数的名字必须与类名相同,而不能由用户任意命名。它可以有任意类型的参数,但不能具有返回值类型。析构函数通常用于执行一些清理任务,如释放分配给对象的内存空间等。析构函数名与类名相同,但它前面必须加一个波浪号。不能有返回值,也不能有参数。3.3 什么是对象数组?? 所谓对象数组,是指每一个数组元素都是对象的数组。3.4 什么是this指针?它的主要作用是什么?? C+为成员函数提供了一个名为this的指针,这个指针称为自引用指针。每当

14、创建一个对象时,系统就把this指针初始化为指向该对象。? 一个类的所有对象合用一份成员函数,this指针可以帮助对象辨别出当前调用的是自己的那个对象的数据成员和函数。3.5 友元函数有什么作用?? 友元函数可以在类的外部访问类的私有成员或保护成员。3.6(1)声明并定义了P2, P3, 并用默认无参构造函数初始化。(2)声明并定义了P2, 并调用Point类的拷贝构造函数用P1对P2进行初始化。(3)声明并定义了P2, 并调用Point类的拷贝构造函数用P1对P2进行初始化。(4)调用拷贝构造函数,将P1的成员值赋值给P4的成员。3.7-3.10 BCCB3.11-3.15 BAABA3.1

15、6-3.17 BB3.1810,2030,4850,6870,8090,1611,1203.19? Constructing? 10? 100? Destructing3.20? 3objects in existence? 4objects in existence after allocation? 3objects in existence after deletion3.21? Counting at0? Counting at93.22? Default constructor called.? Default constructor called.? Default constru

16、ctor called.? Construcotor:a=1,b=2? Construcotor:a=3,b=4? Construcotor:a=5,b=63.23? Con.? Copy con.? default.? Copy con.3.24? A=5? B=14? A=9? B=143.25? 5,7? 22.253.26? Constructing? Constructing? A=5? B=15? A=10? B=15? Destructing? Destructing3.27? void pintStu();函数只有声明,没有定义。? age是私有成员,不能用对象直接调用。3.2

17、8? void printStu() 和 void setSno(int s) 没有加限定符 Student:? void setAge(int a)在类中没有声明3.29? 构造函数不能定义为私有。否则无法创建对象。3.30 下面是一个计算器类的定义,请完成该类成员函数的实现。class counterpublic: counter(int number); void increment(); /给原始值加1 void decrement(); /给原始值减1 int getvalue(); /取的计数器值 int print(); /显示计数private: int value;count

18、er:counter(int number) value = number;void counter:increment() +value;void counter:decrement() -value;int counter:getvalue() return value;int counter:print() cout value endl; return value;3.31 根据注释语句提示,实现类Date的成员函数#include using namespace std;class Datepublic: void printDate(); void setDay(int d); v

19、oid setMonth(int m); void setYear(int y);private: int day, month, year;void Date:printDate() cout 今天是 year 年 month 月 day 日 endl;void Date:setDay(int d) day = d;void Date:setMonth(int m) month = m;void Date:setYear(int y) year = y;int main() Date testDay; testDay.setDay(5); testDay.setMonth(10); test

20、Day.setYear(2003); testDay.printDate(); return 0;3.32 建立类cylinder, cylinder的构造函数被传递了两个double值,分别表示圆柱体的半径和高度。用类cylinder计算圆柱体的体积,并存储在一个double变量中。在类cylinder中包含一个成员函数vol,用来显示每个cylinder对象的体积。const int PI = 3.14;class cylinderprivate: double radius, height, volume;public: cylinder(int rad, int hei); doubl

21、e getVolume(); void vol();cylinder:cylinder(int rad, int hei) radius = rad; height = hei;double cylinder:getVolume() volume = PI * radius * radius *height; return volume;void cylinder:vol() cout 圆柱体的体积是: volume endl;3.33 构建一个类book,其中包含有两个私有数据成员qu和price,将qu初始化为15,将price初始化为qu的10倍,建立一个有5个元素的数组对象。显示每个对

22、象数组元素的qu*price值。class bookprivate: int qu, price;public: book(int qu); int mult();book:book(int q) if(q 5) qu = 1; else qu = q; price = 10 * qu;int book:mult() return qu * price;int main() book books5 = 1,2,3,4,5; for(int i = 0; i 5; i+) cout booksi.mult() ; 3.34 修改3.33,通过对象指针访问对象数组,使程序以相反的顺序显示每个对象数

23、组元素的qu*price值。class bookprivate: int qu, price;public: book(int qu); int mult();book:book(int q) if(q 5) qu = 1; else qu = q; price = 10 * qu;int book:mult() return qu * price;int main() book books5 = 1,2,3,4,5; book *p = books; p += 4; for(int i = 0; i 5; i+) cout mult() ; -p; return 0;3.35 构建一个类St

24、ock,含字符数组stockcode及整型数组成员quan、双精度型数据成员price。构造函数含3个参数:字符数组na及q、p。当定义Stock的类对象时,将对象的第一个字符串参数赋给数据成员stockcode,第2和第3个参数分别赋给quan、price。未设置第2和第3个参数时,quan的值为1000,price的值为8.98.成员函数print没有形参,需使用this指针,显示对象数据成员的内容。编写程序显示对象数据成员的值。#include using namespace std;class Stockprivate: char stockcode25; int quan; doub

25、le price;public: Stock(char na, int q = 1000, double p = 8.98); Stock(char na); void print();Stock:Stock(char na, int q = 1000, double p = 8.98) strcpy(stockcode, na); quan = q; price = p;void Stock:print() cout stockcode: stockcode quan: quan price: price endl;int main() Stock stock1(600001, 3000, 5.67); Stock stock2(600002); stock1.print(); stock2.print(); return 0;3.36 编写一个程序,已有若干学生的数据,包括学号、姓名、成绩,要求输出这些学生的数据并计算出学生人数和平均成绩(要求将学生人数和总成绩用静态数据成员表示)。#include using namespace std;class studentprivat

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

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