ImageVerifierCode 换一换
格式:DOCX , 页数:46 ,大小:77.88KB ,
资源ID:5918223      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

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

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     留言反馈    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【xrp****65】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【xrp****65】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(C++面向对象程序设计教程(第3版)—-陈维兴-林小茶课后习题答案.docx)为本站上传会员【xrp****65】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

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

1、 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的超集,保持与C的兼容。2) 保持了C的简洁、高效和接近汇编语言等特点,并对C的功能作了不少扩

6、充。用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; return 0; cout The lowest common denominator is d

7、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 = 1;#define T1 a+a#define T2 T1-T1 cout T2 is T2 e

8、ndl; 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 + pii - 1; return 0;2.23 重载sroot函数,输出一个数的二次方根。#include

9、 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 using namespace std;int main() int num = 0; /总共换法的总数。

10、初始化为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;void swap(int &a, int &b) a = a + b; b = a - b; a =

11、 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 (Fun(a) * Fun(b) = 0); if(Fun(b) = 0) cout x = b

12、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: 公有数据成员和成员函数3.2 构造函数和析构函数的主要作用是什么?它们各自有什么特性? 构造函

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

14、可以帮助对象辨别出当前调用的是自己的那个对象的数据成员和函数。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.16-3.17 BB3.1810,2030,4850,6870,8090,1611,1203.19 Const

15、ructing 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 constructor called. Construcotor:a=1,b=2 Construcotor:a=3,b=4 Construcoto

16、r: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.28 void printStu() 和 void setSno(int s) 没有加限定符 Student: void setAge(int a)在类中没有声明3.29 构造函数

17、不能定义为私有。否则无法创建对象。3.30 下面是一个计算器类的定义,请完成该类成员函数的实现。class counterpublic: counter(int number); void increment(); /给原始值加1 void decrement(); /给原始值减1 int getvalue(); /取的计数器值 int print(); /显示计数private: int value;counter:counter(int number) value = number;void counter:increment() +value;void counter:decrement

18、() -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); void setMonth(int m); void setYear(int y);private: int day, month, year;void Date:printDate()

19、 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); testDay.setYear(2003); testDay.printDate(); return 0;3.32 建立类cylinder, cylinder的构造函数被传递了两个double

20、值,分别表示圆柱体的半径和高度。用类cylinder计算圆柱体的体积,并存储在一个double变量中。在类cylinder中包含一个成员函数vol,用来显示每个cylinder对象的体积。const int PI = 3.14;class cylinderprivate: double radius, height, volume;public: cylinder(int rad, int hei); double getVolume(); void vol();cylinder:cylinder(int rad, int hei) radius = rad; height = hei;dou

21、ble 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个元素的数组对象。显示每个对象数组元素的qu*price值。class bookprivate: int qu, price;public: book(int qu); int mult();book:book(

22、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,通过对象指针访问对象数组,使程序以相反的顺序显示每个对象数组元素的qu*price值。class bookprivate: int qu, price;public: book(int qu); int mult();book:book(in

23、t 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 构建一个类Stock,含字符数组stockcode及整型数组成员quan、双精度型数据成员price。构造函数含3个参数:字符数组na及q、p。当定义Stock的类对象时,将对象的第一个字符串参数赋

24、给数据成员stockcode,第2和第3个参数分别赋给quan、price。未设置第2和第3个参数时,quan的值为1000,price的值为8.98.成员函数print没有形参,需使用this指针,显示对象数据成员的内容。编写程序显示对象数据成员的值。#include using namespace std;class Stockprivate: char stockcode25; int quan; double price;public: Stock(char na, int q = 1000, double p = 8.98); Stock(char na); void print()

25、;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 编写一个程序,已有若干学生的数据,

26、包括学号、姓名、成绩,要求输出这些学生的数据并计算出学生人数和平均成绩(要求将学生人数和总成绩用静态数据成员表示)。#include using namespace std;class studentprivate: char name25, studentNo10; int score; static int sum; static int totalScore;public: student(char na, char stuNo, int sc); void show(); static void showTotal();student:student(char na, char stu

27、No, int sc) strcpy(name, na); strcpy(studentNo, stuNo); score = sc; +sum; totalScore += sc;void student:show() cout 姓名: name endl; cout 学号: studentNo endl; cout 成绩: score endl;void student:showTotal() cout 总人数: sum endl; cout 平均成绩: (double)totalScore/sum endl;int student:sum = 0;int student:totalSco

28、re = 0;int main() student s1(张无忌, 111254, 75); student s2(李莫愁, 254114, 60); student s3(小龙女, 112587, 88); s1.show(); s2.show(); s3.show(); student:showTotal();return 0;4.1 有哪几种继承方式?每种方式的派生类对基类成员的继承性如何? 公有继承,私有继承和保护继承。 基类的私有成员,无论哪种继承方式都不能访问。 公有继承不改变基类的公有和保护成员的访问限制。 私有继承将基类的公有和保护成员都变成私有。 保护继承将基类的公有和保护成

29、员都变成保护。4.2 派生类能否直接访问基类的私有成员?若否,应如何实现? 不能。可以在基类里添加一个公有成员函数来访问私有成员,派生类就能继承这个公有成员函数,实现对基类私有成员的访问。4.3 保护成员有哪些特性?保护成员以公有方式或私有方式继承后的访问特性如何? 保护成员只能被本类或本类的派生类所访问,在类或派生类外是不能被访问的。 后面一问见第一题的答案。4.4 派生类构造函数和析构函数的执行顺序是怎样的? 构造函数是先执行父类的构造函数,再执行类中其他类对象的构造函数,再执行本类的构造函数。如果同级有多个构造函数,则按声明顺序执行。 析构函数与构造函数的执行顺序刚好相反。4.5 派生类

30、构造函数和析构函数的构造规则是怎样的? 派生类名(参数总表) : 基类名(参数总表) 派生类新增数据成员的初始化语句派生类中的析构函数与基类无关。4.6 什么是多继承?多继承时,构造函数与析构函数的执行顺序是怎样的? 多继承是指一个类同时继承自多个不同的基类。 执行顺序同4.44.7 在类的派生中为何要引入虚基类?虚基类构造函数的调用顺序是如何规定的? 如果一个类有多个直接基类,而这些直接基类又有一个共同的基类,则在最底层的派生类中会保留这个简介的共同基类数据成员的多份同名成员。在访问这些同名成员的时候,会产生二义性。为了解决二义性,引入了虚基类。1) 如果虚基类中定义有带形参的构造函数,并且

31、没有定义默认形式的构造函数,则整个继承结构中,所有直接或间接的派生类都必须在构造函数的成员初始化表中列出对虚基类构造函数的调用,以初始化在虚基类中定义的数据成员。2) 建立一个对象时,如果这个对象中含有从虚基类继承来的成员,则虚基类的成员是由最远派生类的构造函数通过调用虚基类的构造函数进行初始化的。该派生类的其他基类对虚基类构造函数的调用都自动被忽略。3) 若同一层次中同时包含虚基类和非虚基类,应先调用虚基类的构造函数,再调用非虚基类的构造函数,最后调用派生类的构造函数。4.8-4.11 ACCB4.12 Constructor B1. Constructor B2. Constructor

32、A. 3 2 14.13 主食=bread 副食=steak4.14 0,0,0 0,1,0 3,6,94.15 Constructor B1. Constructor B2. Constructor B3. Constructor A. 1 2 4,34.16 44.17(1,2)5,6(6,9)4.18 class base1 class base2 class level2 class base2 class level1 class toplevel4.19#include using namespace std;#include class tablepublic: table(in

33、t p, int q) i = p; j = q; void ascii(void);protected: int i, j;void table:ascii() int k = 1; for(; i = j; i+) cout setw(4) i (char)i; if(k)%12 = 0) cout n; k+; cout n;class der_table:public tablepublic: der_table(int p, int q, char *m):table(p,q) c = m; void print();protected: char *c;void der_table:print() cout c n; table:ascii();int main() der_table ob(a, z, ASCII value-char); ob.print(); return 0;4.20#include using namespace std;#include class area_c1protected: double height; double width;public: area_c1(double r, double s)

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服