数据结构习题解答(1-8章)

上传人:飞*** 文档编号:28709845 上传时间:2018-01-19 格式:DOC 页数:110 大小:8.43MB
返回 下载 相关 举报
数据结构习题解答(1-8章)_第1页
第1页 / 共110页
数据结构习题解答(1-8章)_第2页
第2页 / 共110页
数据结构习题解答(1-8章)_第3页
第3页 / 共110页
数据结构习题解答(1-8章)_第4页
第4页 / 共110页
数据结构习题解答(1-8章)_第5页
第5页 / 共110页
点击查看更多>>
资源描述

《数据结构习题解答(1-8章)》由会员分享,可在线阅读,更多相关《数据结构习题解答(1-8章)(110页珍藏版)》请在金锄头文库上搜索。

1、- 1 -数据结构习题解答计算机科学与工程学院2004 年 10 月- 2 -第 0 章 C+基础一、基本概念题0-1 函数和成员函数有什么区别?解: C+中有两种类型函数:常规函数和成员函数.二者既有区别又有联系。(1)二者作用不同:常规函数通常用于表示一个特定的功能;成员函数用于某个特定类方法的定义。(2)二者定义方法不同:常规函数通常可以存放在程序的任意位置;成员函数只能用于存放在特定类的实现文件中。(3)二者的调用规则不同:常规函数通常可以在其作用域内的任意调用;成员函数必须通过特定类或特定类的实例调用。(4)二者的作用域不同:常规函数通常具有全局作用域内;成员函数必须则具有封装性、继

2、承性和多态性等特征。0-2 在函数中,什么叫输入型参数?什么叫输出型参数?解:输入型参数:是指调用函数只通过该参数传送数据给被调用函数,被调用函数在执行过程中对该参数的修改不能传递给调用函数;输出型参数:是指调用函数只通过该参数把被调用函数处理后得到的结果数据传送给调用函数,由于这样的参数是从被调用函数得到数据的,所以称为输出型参数.0-3 什么叫引用?函数的引用类型参数是怎样实现输出型参数功能的?解:所谓引用是给变量或对象起一个别名,即引用引人了一个变量或对象的同义词.由于函数被调用时,函数的引用类型参数传递给被调用函数的是调用函数中某个对象(实际参数)的引用,所以被调用函数种任何给引用参数

3、的赋值就是给实际参数的赋值,所以引用参数能实现输出型参数的功能.0-4 一个成员函数的参数类型为引用类型和常值引用类型有什么不同?解: C+中函数(包括常规函数和成员函数)的参数有四种方式:值参数、常值参数、引用参数和常值引用参数方式.其中,值参数、常值参数和常值引用参数均为输入型参数。即这些参数方式的函数调用不会改变对应形式参数的实际参数的值.但他们又各有不同的特点:值参数方式在运行时对应的实际参数的值拷贝给形式参数,被调用函数可以修改形式参数的值,当函数终止时,形式参数的值不拷贝回实际参数。常值参数方式在运行时将对应的实际参数的值拷贝给形式参数,被调用函数不能修改形式参数的值.常值引用参数

4、方式在运行时将对应的实际参数的引用(地址)拷贝给形式参数,被调用函数不能修改形式参数的值.所以,当参数的存储空间较大时,常值引用参数方式将更节省存储空间和运行时间。- 3 -0-5 一个成员函数的返回值类型为引用类型和常值引用类型有什么不同?解: 当成员函数返回值为引用方式时,由于引用型变量不是单独定义的,所以该成员函数返回值是一个已存在变量(或对象)的别名.当该成员函数被重新赋值时则其对应的变量(或对象)值将改变.当成员函数返回值为常值引用方式时,其返回值和引用方式的成员函数返回值类同,只是该成员函数返回值不能被重新赋值.0-6 函数的返回值是全局变量还是局部变量?函数中能否用函数的返回值给

5、其他变量对象赋值?为什么?解: 函数的返回值属于全局变量. 函数中可以用函数的返回值给其他变量对象赋值。0-7 什么叫类?一个类中主要包括哪两部分?解: 类是对具有相同属性和相同方法的一组对象的抽象.类定义包括类中成员变量(或称属性)的定义和成员函数(或称方法)的定义.C+中使用标识符class 定义类。0-8 类有哪几种访问权限?各种访问权限的定义有什么不同?解: 类的成员变量和成员函数有三种访问权限:私有(private)、公有(public)和保护(protected).其中私有权限(private)成员是外部不可见的,只能由该类对象的成员函数以及被声明为友元的函数或声明为友元的类的对象

6、的成员函数访问.公有权限 (public)成员都是外部程序可见的.公有部分中的成员变量和成员函数既允许该类对象的成员函数访问,也允许程序中其他函数或其他类的对象的成员函数访问.一个类的公有部分构成了这个类的操作界面.外部函数和对象通过该操作界面对该类对象进行操作.保护权限(protected)成员和私有权限(private)成员一起构成类的私有部分,保护权限(protected)成员允许该类的派生类访问.0-9 类的构造函数是什么时候执行的?类的析构函数是什么时候执行的?解: 构造函数是当定义对象时被自动调用的特殊成员函数,用来在内存中建立类的具体对象(即在内存中为该对象分配适当的空间)并对其

7、进行初始化赋值的成员函数.析构函数是当对象被撤销时被自动调用的特殊成员函数.当一个对象被撤销时,析构函数提供了释放该类对象占用内存空间的方法.0-10 什么叫重载?在软件设计中,类的成员函数重载有什么作用?解: 重载就是两个或两个以上的函数(或运算符)使用相同的名字.重载功能除了可以增强函数设计和类设计的灵活性和通用性以外,还可以支持类的多态性.0-11 什么叫友元?哪些成分可以定义为一个类的友元?解:在 C+中,一个类的友元可以存取这个类的私有成分. 一个类的友元可以是其他类的成员函数、外部函数和其他类.0-12 派生类有哪几种派生方式?解: 派生类的派生方式主要有 public 派生方式和

8、 private 派生方式两种.- 4 -0-13 什么叫多态性?什么叫虚函数?解:多态性是指当相同对象收到不同的消息或不同对象收到相同的消息时产生不同的方法调用的特性.C+支持两种多态性:一种是编译时的多态性, 编译时的多态性是指这种多态性在编译时即进行了确认和绑定.编译时的多态性是通过重载函数来实现的.另一种是运行时的多态性. 运行时的多态性是指这种多态性在运行时才进行识别和绑定.虚函数是在基类中被说明为 virtual,并在派生类中重新定义的成员函数.系统在识别到虚函数时,在运行时才决定当前实际调用的是基类中的成员函数还是派生类中的成员函数,因此,虚函数实现多态性的方法也可看做是成员函数

9、的动态重载.0-14 什么叫纯虚函数?什么叫抽象类?解: 纯虚函数是在基类中说明的虚函数,它在基类中没有定义,但要求任何派生类都要定义各自的实现方法. 包含有纯虚函数的类称为抽象类.由于抽象类包含了没有函数定义的纯虚函数,所以不允许定义抽象类的对象.0-15 抽象数据类型和模板各自是怎样实现程序的通用化设计的?解: 在 C+中,实现通用化的软件设计的方法主要有抽象数据类型法和模板法.抽象数据类型方法是在定义类时,其成员变量的数据类型使用抽象数据类型,当应用程序具体包含该类头文件前再对该抽象数据类型进行具体定义.模板方法是把函数或类中的数据类型作为参数设计模板函数或模板类,经过参数实例化,变为一

10、个类型参数具体的函数或类的实例,完成具体的功能.0-16 什么叫静态内存分配?什么叫动态内存分配?动态内存分配有什么优点?解:程序中使用的数组元素个数或占用内存单元的大小是在程序编译时就确定的,因此在程序运行时这些数组的元素个数或占用内存单元的大小是确定的,这种内存分配方法称做静态内存分配.静态内存分配的缺点是程序中数组个数或占用内存单元的大小是固定的,在程序运行过程中不能修改.动态内存分配是在程序运行时确定数组元素个数或占用内存单元的大小,从而可在程序运行时根据需要分配内存空间.0-17 写出 new 运算符的语法格式和 delete 运算符的语法格式.解: new 运算符的语法格式为:ne

11、w 类型名(初始值);其中,类型名指定了要分配存储空间的类型.delete 运算符用于释放单个对象内存空间的语法格式为:delete 指针;delete 运算符用于释放对象数组内存空间的语法格式为:delete指针;- 5 -二、上机实习0-18 定义和实现复数的 C+类要求:(1)复数的数据城包括复数的实部和虚部,复数的实部和虚部定义为浮点数.(2)构造函数包括三个:第一个构造函数没有参数第二个构造函数有一个参数,即把一个浮点数赋给复数的实部,复数的虚部为 0;第三个构造函数有两个参数,即把两个浮点数分别赋给复数的实部和复数的虚部.(3)复数的成员函数包括获取和修改复数的实部和虚部.(4)复

12、数的成员函数还包括运算符重载形式的复数的+、-、*、运算.(5)定义友元形式的重载的流函数来输入一个复数和输出一个复数.解:class Complexprivate:float mRealPart; /数据成员实部float mVirtualPart; /数据成员虚部public:Complex(void); /构造函数一Complex(float realPart); /构造函数二Complex(float realPart, float virtualPart); /构造函数三float GetRealPart(); /返回实部数据成员 float GetVirtualPart(); /返

13、回虚部数据成员 void SetRealPart(float RealPart); /设置实部数据成员void SetVirtualPart(float virtualPart); /设置虚部数据成员 float Mod(); /返回复数的模Complex /重载复数的加法运算Complex /重载复数的减法运算Complex /重载复数的乘法运算Complex /重载复数的除法运算/操作符(istream;Complex:Complex(void)mRealPart=mVirtualPart=0;Complex:Complex(float realPart)mRealPart= realPa

14、rt;mVirtualPart=0;Complex:Complex(float realPart, float virtualPart)- 6 -mRealPart= realPart;mVirtualPart= virtualPart;float Complex:GetRealPart()return mRealPart;float Complex:GetVirtualPart()return mRealPart;void Complex:SetRealPart(float realPart) mRealPart= realPart;void Complex:SetVirtualPart(f

15、loat virtualPart)mVirtualPart= virtualPart;Complex & Complex:operator+(Complex c)Complex *result=new Complex();result-mRealPart=mRealPart+c.mRealPart ; result-mVirtualPart =mVirtualPart+c.mVirtualPart; return *result;Complex & Complex:operator-(Complex c)Complex *result=new Complex();result-mRealPart=mRealPart-c.mRealPart ; result-mVirtualPart =mVirtualPart-c.mVirtualPart; return *result;Complex & Complex:operator*(Complex c)Complex *result;result=new Complex();result-mRealPart=mRealPart*c.mRealPart- mVirtualPar

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

当前位置:首页 > 行业资料 > 其它行业文档

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