《C面向对象程序设计教程第陈维兴林小茶课后习题答案及解析》由会员分享,可在线阅读,更多相关《C面向对象程序设计教程第陈维兴林小茶课后习题答案及解析(55页珍藏版)》请在金锄头文库上搜索。
1、集团文C面向对象程序设计数程第陈维兴林小茶课后习题答案及解析号:(981 &UATW W-M WUB-WUNN-INNUL-DQQTY-C+面向对象程序设计教程课后题答案什么是面向对象程序设计面向对象程序设计是一种新的程序设计范型.这种范型的主要特征是:程序:对象+消息面向对象程序的基本元素是对象。主要结构特点是:第一,程序一般由类的定义和类的使用两部分组成;第二,程序中的一切操作都是通过向对象发送消息来实现的。什么是对象什么是类对象与类之间的关系是什么对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统 一体。类就是具有相同的数据和相同的操作的一组对象的集合,也就是说,类是对
2、具 有相同数据结构和相同操作的一类对象的描述。类和对象之间的关系是抽象和具体的关系。类是多个对象进行综合抽象的结 果,一个对象是类的一个实例。现实世界中的对象有哪些特征请举例说明。现实世界中的对象具有以下特征: 1)每一个对象必须有一个名字以区别于其他对象;2)用属性来描述对象的某些特征;3)有一组操作,每组操作决定对象的一种行为;4)对象的行为可以分为两类:一类是作用于自身的行为,另一类是作用于其 他对象的行为。例如一个教师是一个对象。每个教师对象有自己的名字来和别的教师区别。教 师具有编号,姓名,年龄,职称,专业等属性。教师拥有走路,吃饭,授课等 行为操作。走路,吃饭是作用于自身的行为,授
3、课是作用于其他对象的行为。什么是消息消息具有什么性质一个对象向另一个对象发出的请求成为“消息”。消息具有以下3个性质:1)同一个对象可以接收不同形式的多个消息,做出不同的相应;2)相同形式的消息可以传递给不同的对象,所做出的响应可以是不同的;3)对消息的响应并不是必须的,对象可以响应消息,也可以不响应。什么是抽象和封装请举例说明。抽象是将有关事物的共性归纳、集中的过程。例如:把所有具有大学生学籍的人归为一类,成为“大学生”,这就是一个抽 象。封装是指把数据和实现操作的代码集中起来放在对象内部,并尽可能隐藏对象 的内部细节。例如:每一台洗衣机都有出厂日期、机器编号等属性,也有启动、暂停、选择 等
4、操作。人们在使用洗衣机的时候只需要按下对应的按钮,而不用关心具体的 内部实现。这就是封装。什么是继承请举例说明。继承就是允许派生类使用基类的数据和操作,同时,派生类还可以增加新的操 作和数据。例如:哺乳动物是一种热血、有毛发、用奶哺育幼崽的动物;狗是有犬牙、 食肉、特定的骨骼结构、群居的哺乳动物。狗就继承了哺乳动物。若类之间具有继承关系,则他们之间具有什么特征若类之间具有继承关系,则他们之间具有下列几个特征:1)类间具有共享特征(包括数据和操作代码的共享);2)类间具有差别或新增部分(包括非共享的数据和操作代码);3)类具有层次结构。单继承是指每个派生类只直接继承了一个基类的特征。例如狗继承自
5、哺乳动物。多继承是指多个基类派生出一个派生类的继承关系。比如玩具车同时继承自玩 具和车。什么是多态请举例说明。多态是指不同的对象收到相同的消息时执行不同的操作。例如,有一个窗口类对象,还有一个棋子类对象。当我们发出“移动”消息时,两个对象的行为不同。面向对象程序设计的主要优点是什么1 .可提高程序的重用性;2 .可控制程序的复杂性;3 .可改善程序的可维护性;4 .能够更好地支持大型程序设计;5 .增强了计算机处理信息的范围;能够很好地适应新的硬件环境。简述C+的主要特点。1) C+是C的超集,保持与C的兼容。2)保持了 C的简洁、高效和接近汇编语言等特点,并对C的功能作了不少扩 充。用C+编
6、写的程序比C更安全,可读性更好,代码结构更为合理。3)程序质量高。4)增加了面向对象机制。ttinclude 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 endl; return
7、0;)有效没有函数声明;函数定义没有写返回值类型。(1)等价,函数声明可以省略参数的名字。(2)不等价,第二个的函数定义不能省略参数的名字。CDAABACBDCDC10110 101020举例说明可以使用const替代rdefine以消除#define的不安全性。kinclude using namespace std;int main()(int a = 1;#define T1 a+akdefine T2 Tl-Tlcout T2 is T2 endl;return 0;)上面这个程序,初看应该输出T2 is 0但是实际上,得出T2 is 2如果把#define换成const,则可以输出想
8、要的结果。用动态分配空间的方法,计算Fibonacci数列的前20项,并存储到动态分配 的空间中。#include using namespace std;int main()int *pi = new int 20;*pi = 1;pil = 1;for(int i = 2; i 20; i+)(pii = pii - 2 + pii - 1;)return 0;)重载sroot函数,输出一个数的二次方根。ttinclude using namespace std;double sroot(int num)(return (double)sqrt (double)num);)double s
9、root(long num)(return (double)sqrt(double)num);) double sroot (double num)return (double)sqrt(num);int main()(return 0;)解决百钱问题。将一元人民币换成1、2、5分的硬币,有多少种换法#include using namespace std;int main() (int num = 0; Default constructor called.Default constructor called.Construcotor:a=l, b=2Construcotor:a=3, b=
10、4Construcotor:a=5, b=6Con.Copy con.default.Copy con.A=5B=14A=9B=145,7ConstructingConstructingA=5B-15A=10B=15DestructingDestructingvoid pintStu。;函数只有声明,没有定义。age是私有成员,不能用对象直接调用。void printStu()和 void setSno (int s)没有加限定符 Student:void setAge (int a)在类中没有声明构造函数不能定义为私有。否则无法创建对象。下面是一个计算器类的定义,请完成该类成员函数的实现。c
11、lass counterpublic:counter(int number);void increment () ;ult () ;修改,通过对象指针访问对象数组,使程序以相反的顺序显示每个对象数组元素的qu*price值。class book(private: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 books 5
12、= 1, 2, 3, 4, 5;book *p = books;P += 4;for(int i = 0; i 5; i+) (cout mult() -P;)return 0;)构建一个类Stock,含字符数组stockcode及整型数组成员quan、双精度型 数据成员price。构造函数含3个参数:字符数组na及q、p当定义Stock 的类对象时,将对象的第一个字符串参数赋给数据成员stockcode,第2和第 3个参数分别赋给quan、price。未设置第2和第3个参数时,quan的值为 1000, price的值为.成员函数print没有形参,需使用this指针,显示对象 数据成员的内
13、容。编写程序显示对象数据成员的值。ttinclude using namespace std;class Stock (private:char stockcode 25;int quan;double price;public:Stock (char na, int q = 1000, double p 二;Stock(char na);void print (););Stock::Stock (char na, int q = 1000, double p 二 (strcpy(stockcode, na);Quan = q; price = p;) void Stock:print() (cout stockcode: stockcode quan: quan price: price endl;)int main()(Stock stockl (“600001,3000,;Stock stock2(“600002);0;0;return 0;)编写一个程序,已有若干学生的数据,包括学号、姓名、成绩,要求输出这 些学生的数据并计算出学生人数和平均成绩(要求将学生人数和总成绩用静态 数据成员表示)。ttinclude using namespace std;class student(private:char name25, studentNo10;int score;st