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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

C++程序设计练习题与答案1.docx

1、C+程序设计练习题与答案1C+程序设计练习题一、填空题1对象的三大基本特性分别为多态性、( )、封装性。2赋值运算符应重载为( )函数。3用( )声明的基类称为虚基类。4用( )声明的函数称为虚函数。5派生类对基类继承控制访问有三种。派生类可以定义其基类中不具备的( )。6静态成员是对象的成员,( )函数不是类的成员。7在函数体之前加( )关键字可以防止覆盖函数改变数据成员的值。8一个const对象只能访问( )成员函数。9使用友元函数是为了提高程序效率,且节约了( )开销。10类名为“ClassName”的类,其拷贝构造函数的原型说明是( )。11由关键字private、public和pro

2、tected限定成员的访问权限分别是( )、( )和( )。缺省关键字时成员的访问权限为( )。12如果想要公共基类在派生类中只有一个拷贝,就要将公共的基类说明为( );如果虚基类没有默认构造函数,就必须在每一个派生类的构造函数中都要调用虚基类的( )函数。13静态成员函数是使用关键字( )说明的成员函数。14一个函数的原型声明为“void FunName(int=0, double=0, char=x);”,则调用FunName函数的方法共有( )种。15编译时多态性是通过( )实现的;运行时多态性是通过( )实现的。16C+通过( )实现编译时多态性,通过( )实现运行时多态性。17在C+

3、中,声明类的关键字是( )。18声明C+模板的关键字是( )。19调用函数原型声明为“void FunName(short, int=0, float=1.0);”的方法有( )种。20处理C+异常的方法:采用( )结构。21用关键字( )、( )和( )限定的成员,其访问权限分别为:公有的、私有的和保护的。缺省关键字时,成员的访问权限为( )。22在C+中,处理( )的方法是采用try-catch结构。23在C+中,用关键字( )说明内置函数。24在C+中,声明友元函数的关键字是( )。25将公共基类说明为( )时,多重派生过程中公共基类在派生类中就只有一个拷贝了。26在C+中,如果函数调用

4、在前、定义在后,就必须先对函数进行( )。27在成员函数头之后、函数体之前加( )修饰的成员函数称为类的常成员函数。28包含纯虚函数的类称为抽象类,这种类只能用作( )来派生新类。由于抽象类的特殊性,我们可以说明抽象类的( ),但不能说明抽象类的( )。29说明函数类型为“double”、函数名为“virfun”且无参数的纯虚函数的表达形式为( )。30说明静态成员要使用关键字( )。31当函数调用在前定义在后时,必须先对函数进行( )说明。32类名为“ClassN”的类的拷贝构造函数的函数原型说明为( )。33抽象类是包含( )的类,必须注意:不能说明抽象类的( ),但可说明抽象类的( )。

5、34流插入运算符只能重载为友元函数,重载流插入运算符的函数名为( )。35要防止在该成员函数中改变数据成员的值,就要在类的成员函数名之后、函数体之前加上关键字( )。36类和对象的关系可表述为:类是对象的( ),而对象则是类的( )。37在C+中,三种继承方式的说明符号为( )、( )和( ),如果不加说明,则默认的继承方式为( )。38如果只想保留公共基类的一个复制,就必须使用关键字( )把这个公共基类声明为虚基类。39若要把void myfun( )定义为类A的友元函数,则应在类A的声明中加入语句( )。40类的静态成员分为( )和( )。41运算符重载要求保持其原来的操作数个数、( )、

6、( )和语法结构。42通过关键字( )可以声明模板,通过关键字( )指定函数模板的类型参数。43请列出C+中两种用户自定义的数据类型:( )、( )。44构造函数的作用是( )。45后置自增运算符“+”重载为类的成员函数(设类名为ClassName)的形式为( )。二、单选题1继承机制的作用是( )A) 信息隐藏 B) 数据封装 C) 定义新类 D) 数据抽象2类的析构函数的作用是( )A) 一般成员函数 B) 类的初始化 C) 对象的初始化 D) 删除对象创建的所有对象3类的析构函数是在( )调用的。A) 类创建时 B) 创建对象时 C) 删除对象时 D) 不自动调用4在( )情况下适宜采用

7、inline定义内联函数。A) 函数体含有循环语句 B) 函数体含有递归语句C) 函数代码少、频繁调用 D) 函数代码多、不常调用5如果类A被说明成类B的友元,则( )A) 类A的成员即类B的成员 B) 类B的成员即类A的成员C) 类A的成员函数不得访问类B的成员 D) 类B不一定是类A的友元6在类中声明转换函数时不能指定( )A) 参数 B) 访问权限 C) 操作 D) 标识符7在公有继承的情况下,基类成员在派生类中的访问权限( )A) 受限制 B) 保持不变 C) 受保护 D) 不受保护8在C+类体系中,不能被派生类继承的有( )A) 转换函数 B) 构造函数 C) 虚函数 D) 静态成员

8、函数9假定ClassN为一个类,则执行“ClassN x;”语句时将自动调用该类的( )A) 有参构造函数 B) 无参构造函数 C) 拷贝构造函数 D) 赋值构造函数10C+语言建立类族是通过( )A) 类的嵌套 B) 类的继承 C) 虚函数 D) 抽象类11重载一元运算符-为类A的成员运算符,若有类A的对象obj,则表达式-obj被C+编译器解释为( )。A) obj.operator - ( ) B) operator - (obj) C) obj:operator - ( ) D) obj:operator - ( )12以下有四种关于类的说法,其中不正确的是( )。A) 构造函数可以指

9、定参数,但不能指定函数类型 B) 一个类可以有多个构造函数C) 析构函数不可以指定参数,但可以指定函数类型 D) 一个类只能有一个析构函数13面向对象程序设计讲求封装性,在C+中封装是借助于( )实现的。A) 结构 B) 数组 C) 类 D) 函数14下面有四种关于类的说法,其中不正确的是( )。A) 一个类可以有多个构造函数 B) 析构函数不可以指定函数类型,但可以指定函数参数C) 一个类只能有一个析构函数 D) 在一个类中可以说明其它类的对象15下列有关基类的叙述中不正确的是( ),前提为“公有派生”。A) 基类的公有成员在派生类中仍然是公有的 B) 基类的保护成员在派生类中仍然是保护的C

10、) 基类的私有成员在派生类中仍然是私有的 D) 基类的私有成员在派生类中是不可访问的16以下有四种关于友元的描述,其中错误的是( )。A) 类A的友元类B的成员函数都是类A的友元函数 B) 友元函数可以访问该类的私有数据成员C) 类与类之间的友元关系可以继承 D) 友元可以提高程序的运行效率17C+的封装性是借助于( )实现的。A) 函数 B) 数组 C) 结构 D) 类18要将-重载为类ClassN的后置友元运算符,那么,要在类中添加的原型说明为( )。A) friend ClassN operator - (ClassN &, int); B) friend ClassN operator

11、 - (ClassN &);C) friend ClassN operator - (int); D) friend ClassN operator - ( );19在公有派生时,下列描述中不正确的是( )。A) 派生类的对象可以赋给基类的对象 B) 派生类对象的地址可以赋给指向基类的指针C) 派生类的对象可以初始化基类的引用D) 当基类的指针指向派生类对象时,通过该指针可以直接访问派生类中的成员20以下关于继承成员的访问属性的叙述中,不正确的是( )。A) 基类的保护成员在私有派生类中是私有的 B) 对基类成员的访问必须没有二义性C) 基类的保护成员在保护派生类中是保护的 D) 基类的保护成

12、员在派生类中是保护的三、程序改错题(改正下列类中的错误)1class ClassNprivate: int nmember; ClassN pmember;public: ClassN( ); int ClassN(int x);2void main() char c = new char 20; delete c;3class MyClassprivate: int n=1; MyClass pO;public: MyClass(int a = 0); void MyClass(int a);4#include using namespace std;void main() int & pa

13、r = new int 6; delete par; cout 主函数End! endl;5#include using namespace std;void main() long & par = new long 9; delete par; cout 主函数End! Endl;6CLass CNprivate: long n; CN pobj; public: CN(); void CN(int X);四、分析程序输出题1#include using namespace std;class Apublic: A() coutconstructing A endl; A() coutdes

14、tructing A endl; ;class B: public Apublic: B() coutconstructing B endl; B() coutdestructing B endl; ;class C : public Bpublic: C() coutconstructing C endl; C() coutdestructing C endl; ;void main() C c1; 2#include using namespace std;void fun(int &a, int &b) int p; p=a; a=b; b=p;void exchange(int &a,

15、int &b,int &c) if(ab) fun(a,b); if(ac) fun(a,c); if(bc) fun(b,c);void main() int a=12,b=89,c=56; exchange(a,b,c); couta=a,b=b ,c=cendl;3#include class TC private: int num;public: TC(); int TEST() return num; TC();TC:TC() num=0; TC:TC() coutDestructor is activeendl; void main() TC tarr5; coutExiting

16、mainendl;4#include class CBaseprivate: int n;public: CBase(int m = 0) n = m; virtual void print( ) cout Inside CBase n endl; ;class CDrive: public CBaseprivate: int n;public: CDrive( ) n = 0; CDrive(int a, int b) : CBase(a) , n(b) void print( ) cout Inside CDrive n print( ); pb = &b2; pb-print( ); p

17、b = ⅆ pb-print( ); pb-CBase:print();5#include class CTestprivate: long num;public: CTest( ); CTest( );CTest:CTest( ) num = 0; CTest:CTest( ) cout 调用析构函数 endl; void main( ) CTest cobj; cout 退出主函数 endl;6#include class CNprivate: int n;public: CN(int i) n=i; operator int() return n; ;void main() CN

18、cobj(123); coutcobjendl;7#include void main( ) int num = 100; int & ref = num; cout ref endl; ref = ref + 100; cout num endl; num = num + 100; cout ref endl;8#include class CNameprivate: long num;public: CName( ); CName( );CName:CName( ) num = 0; CName:CName( ) cout 调用析构函数 endl; void main( ) CName c

19、arr2; cout 退出main endl;9分析下列程序并写出程序的运行结果。#include class CBaseprivate: int n;public: CBase(int m = 0) n = m; virtual void print( ) cout Inside CBase n endl; ;class CDrive: public CBaseprivate: int n;public: CDrive( ) n = 0; CDrive(int a, int b) : CBase(a) , n(b) void print( ) cout Inside CDrive n pri

20、nt( ); pb = &bb; pb-print( ); pb = ⅆ pb-print( ); pb-CBase:print();10#include class CTprivate: int n;public: CT(int i) n=i; operator int() return n; ;void main() CT cObj(1234); coutcObjendl;五、编程题1下列类成员函数的定义不完整,请在_处填代码以使其完整。class TC private: int num; float x;public: TC(int, float); TC(TC&);TC:TC(i

21、nt n, float f) num = n; _;TC:TC(TC& t) _; x = t.x;2根据下面的主程序,完成类说明的最小形式(不要求实现成员函数的定义)。#include class Base private: _;public: _;void main() Base bo(6); 3一个类的头文件如下所示,程序产生对象tco,且tco.num=10,并使用Show( )函数输出这个对象的值。/tcn.hclass TCN private: int num;public: TCN(int n) num=n; void Show () coutnumendl; ;#include

22、#include tcn.hvoid main() _; _;4完成下面类中的成员函数的定义(在_处填写适当的内容)。class CTNprivate: int men; float mef;public: CTN(int, float); CTN(CTN &);CTN:CTN( ) men = a; = b;CTN:CTN( rObj ) men = ; mef = .mef;5在_处填写适当内容,以便完成下列类成员函数的定义。class CNprivate: int mn; float mf;public: CN(int = 0, float = 0); CN(CN &);CN:CN( )

23、 this-mn = mn; = mf;CN:CN( rObj ) mn = ; mf = .f;6填上合适的字句,使程序的最终结果为200。#include class CNumberprivate: int val;public: CNumber(int i) val=i; _int( );CNumber:operator int() _ class num : public CNumber public: num(int i) : CNumber(i) ;void main() num n(100); int i=n; couti+nendl;7下面是一个类的测试程序,设计出能使用如下测

24、试程序的类:void main() Test to; to.Init(300, 200); to.Print();输出结果:300-200=1008已知复数类Complex的声明如下:class Complexpublic: Complex(); Complex(double); Complex(double, double); friend Complex operator + (Complex &, Complex &); friend ostream & operator (istream &, Complex &);private: double real, imag;要求:(1)写出

25、该类的所有构造函数的类外定义代码。(2)写出对运算符“+”、“”进行重载的运算符重载函数的定义。9下列AbstractC类是一个表示形状的抽象类,area( )为求图形面积的函数,total( )则是一个通用的用以求不同形状的图形面积总和的函数。class AbstractCpublic: virtual double area()=0;double total(AbstractC *sa , int n) double s=0.0; for(int i=0; iarea( ); return s;要求:(1)从AbstractC类派生圆类(Circle)、正方形类(Square),圆类新增数

26、据成员半径(r),正方形类新增数据成员边长(a) ,圆类和正方形类都有构造函数,修改、显示数据成员值的函数,求面积函数。(2)写出main( )函数,计算半径为3.5的圆和边长为7.9的正方形的面积和(必须通过调用total函数计算)。10一个类的头文件cn.h的内容如下所示:/cn.h#include class CNprivate: int n;public: CN(int); void Print();CN:CN(int N) n = N; void CN:Print() coutnendl; (1) 编写一个主程序,产生对象Obj,且使Obj对象中的n成员的值为100,并使用Print()函数输出这个对象中私有成员n的值。(2) 在主程序中,创建一动

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2