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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

c++复习题.docx

1、c+复习题一、判断题1. C+程序中,不得使用没有定义或说明的变量。( )2C和C+都是面向对象的。( )3对象实际上是功能相对独立的一段程序。( )4包含有纯虚函数的类称为抽象类。( )5函数定义 void swap(A &x)中的形式参数是一个变量的地址。( )6C+提供了string类型。( )7析构函数不能设置默认参数。( )8静态成员函数只能直接访问该类的静态数据成员。( )9用成员函数重载运算符所需的参数个数总比它的操作数少一个。( )10在C+的输入输出系统中,最核心的对象是流。( )11在面向对象程序设计中,类通过消息与外界发生关系。( )12引用是某个变量或对象的别名,建立引

2、用时要对它初始化。( )13当用类的一个对象去初始化该类的另一个对象时,该类的拷贝构造函数会被自动调用。( )14拷贝构造函数可以被显示调用。( )15一个类的析构函数只能有一个。( )16私有派生时,基类的public成员仍被继承为派生类的public成员。( )17设类Counter有私有变量x,它的构造函数Counter(int a)x=a;,则对象声明“Counter c1(3);”定义了三个Counter类的对象。( )18静态成员函数不能访问静态数据成员。( )19类中有函数声明:“friend void f(A &x);”,则函数f只能访问该类的公有成员。( )20重载“”运算符

3、函数可以带多个参数。( )二、填空题1面向对象程序设计方法具有抽象性、封闭性、继承性和 等特点。2声明内联函数的关键字是 。3C+有值传递和 传递两种参数传递机制。4运算符 用于动态内存分配,运算符 用于释放动态分配的内存。5如果类A继承了类B,则类A称为 类,类B称为 类。6在C+中,要实现动态联编,必须使用基类指针调用 。7具有纯虚函数的类称为 。8定义模板的关键字是 。9虚基类的作用是解决 问题 。10假定ABC是一个类,由“ABC a5,b(3)”创建对象时该类的构造函数被调用了 次。11面向对象程序设计方法,程序可表示为程序=_。12面向对象程序设计着重于 _的设计。13在创建对象时

4、,使用类作为样板,故称对象为类的 _。14声明内联函数的关键字是_ 15要求一个变量在程序运行期间其值不能改变,在声明时要用的修饰符是_。16_是一种参数化的多态性工具,可以为逻辑功能相同而类型不同的程序提供代码共享机制。17动态联编所支持的多态性称为 _的多态性。18使用C+风格的输入输出,在程序中必须包含头文件_。19默认的继承方式为_继承方式。20C+有值传递和 _传递两种参数传递机制。21.控制格式输出的操纵符中,( )是设置数据精度的,( )是设置十六进制的。22.如果s是int型变量,且s=6,则下面s%2+(s+1)%2表达式的值为_ _。23已知字母a的ASCII码为十进制数9

5、7,且设ch为字符型变量,则表达式ch=a+4的值为_ _。24数组与函数参数联系密切,当用数组元素作函数参数时,这是属于值传递;当数组名作为参数时,这是属于 传递,对形参的改变可影响到实参。25利用“对象名.成员变量”形式访问的对象成员仅限于被声明为 的成员;若要访问其他成员变量,需要通过 函数或友元函数函数。26一个_和_的关系,正如基本数据类型与该类型的变量一个。27类成员的默认访问方式是_.28一个类有_个构造函数,有_析构函数。29类的_成员函数不能对类中的非静态成员进行默认访问。30如果说明类B是类A的友元类,则类B的所有成员函数都是类A的_。31利用成员函数对二元运算符重载,其左

6、操作数为 ,右操作数为 。32类有两种用法:一种是类的实例化,即生成类的_ ;另一种是通过_派生出新的类。33运算函数中的关键字是_,它和运算符一起组成该运算符函数的函数名。34如果一个类中有一个或多个纯虚函数,则这个类称为_。35文件的打开是通过通过使用类_的成员函数_来实现的。36设所有变量均为整型,则表达式(e=2,f=5,e+,f+,e+f)的值为_。37已知c的ASCII码为十进制数99,设k为字符型变量,则表达式k=c+1的值为_。38函数的形参在未被调用之前 分配空间,函数的形参的 要和实参的相同。39类的成员分为数据成员和_。40类完成了面向对象程序设计的_特性。三、单项选择题

7、1下面说法法中错误的是( ) A、C语言是C+的一个子集 B、C语言和C+是兼容的C、C和C+都是面向对象的 D、C对C语言进行了一些改进2函数没有返回值时,应该选择的函数类型是( ) A、 int B、 float C、 void D、 任意类型3在类定义的外部,可以被任意函数访问的成员是( ) A、 所在类成员 B、 private类成员 C、 public类成员 D、 protected类成员4有关类的说法不正确的是( ) A、 类是一种用户自定义的数据类型 B、 在类中,不做权限说明的数据变量是私有的 C、 在类中,不做权限说明的数据变量是公有的 D、 类的友元函数可以访问类的私有数据

8、成员5类的析构函数被调用的时刻是( ) A、 释放对象 B、 引用对象 C、 创建类 D、 创建对象6引入虚基类的目的是为了解决( ) A、 静态联编问题 B、 二义性问题 C、 浅拷贝问题 D、 封装性问题7关于this指针正确的说法是( ) A、 this指针必须显示说明 B、 友元函数拥有this指针 C、 当创建一个对象后,this指针就指向该对象 D、 静态成员函数拥有this指针8下列中不能重载的运算符是( ) A、 B、 + C、 = D、 ? :9派生类的的对象可以访问它的基类成员中的( ) A、 公有继承的公有成员 B、 私有继承的公有成员 C、 公有继承的私有成员 D、 公

9、有继承的保护成员10定义模板的关键字是( ) A、 template B、 class C、 static D、 public11面向对象程序设计着重于( )的设计 A、对象 B、类 C、算法 D、代码12如果一个函数的功能不太复杂,但要被频繁调用应选用( ) A、重载函数 B、 内联函数 C、 递归函数 D、 友元函数13以下不属于类访问权限的是( ) A、private B、 static C、 public D、 protected14有关类的说法不正确的是( ) A、 类是一种用户自定义的数据类型 B、 在类中,不做权限说明的数据变量是公有的 C、 在类中,不做权限说明的数据变量是私有

10、的 D、 可以不定义类的拷贝构造函数15下面关于成员函数的说法中不正确的是( ) A、成员函数一定是内联函数 B、 成员函数可以重载 C、 成员函数可以无返回值 D、 成员函数可以设定参数的默认值16下面关于构造函数的说法中不正确的是( ) A、构造函数可以有参数,所以也可以有返回值 B、 系统可以提供默认的构造函数 C、 一个类可以有多个构造函数 D、 构造函数可以设置默认参数17关于this指针正确的说法是( ) A、 this指针必须显示说明 B、 友元函数拥有this指针 C、 当创建一个对象后,this指针就指向该对象 D、 静态成员函数拥有this指针18对delete运算符的下列

11、描述中,错误的是( ) A、 用它可以释放用new运算符创建的对象和数组 B、 用它释放一个对象时,它作用于一个new所返回的指针 C、 用它可以一次释放多次用new运算符创建的多个对象 D、 用它释放一个对象数组时,它用的指针名前须加下标运算符19可以访问类对象的私有数据成员的是( ) A、 公有派生类的成员函数 B、 该类的友元类派生的成员函数 C、 其它类的公有函数 D、 该类的友元函数20一个类的析构函数有( )A、 任意多个 B、 4个 C、 2个 D、 1个21C+源文件的扩展名为( )。Acpp Bc Ctxt Dexe22在C+语言中,( )的陈述是正确的。A能使用关键字并区分

12、大小写 B能使用关键字并不区分大小写C 不能使用关键字并区分大小写 D不能使用关键字并不区分大小写23运算符+、=、*、=中,优先级最高的运算符是( )。A+ B= C* D=24下列不合法的变量名为( )。Aint Bint1 Cname_1 Dname025已知x=43,ch=A,y=0;则表达式(x=y&chB&!y)的值是( )。A0 B语法错 C1 D“假”26以下不正确的是( )。 A语句for(i=0;i+)表示无限循环 Bfor(;)表示无限循环Cfor()也表示无限循环 Dwhile(1)表示无限循环27在函数的返回值类型与返回值表达式的类型的描述中,错误的是( )。A 函数

13、返回值的类型是在定义函数时确定,在函数调用时是不能改变的B 函数返回值的类型就是返回值表达式的类型C 函数返回值表达式类型与返回值类型不同时,函数表达式类型应转换成返回值类型D 函数返回值类型决定了返回值表达式的类型28如果一个函数无返回值,定义时它的函数类型应是()。A任意 Bint Cvoid D无29在C+语言中,关于参数默认值的描述正确的是()。A只能在函数定义时设置参数默认值B设置参数默认值时,应当从右向左设置C设置参数默认值时,应当全部设置D设置参数默认值后,调用函数不能再对参数赋值30若有以下定义,则说法错误的是( )。 int a=100,*p=&a ;A声明变量p,其中*表示

14、p是一个指针变量B变量p经初始化,获得变量a的地址C变量p只可以指向一个整形变量D变量p的值为10031列关于结构体的说法错误的是( )。A结构体是由用户自定义的一种数据类型B结构体中可设定若干个不同数据类型的成员C结构体中成员的数据类型可以是另一个已定义的结构体D在定义结构体时,可以为成员设置默认值32下列有关类的说法不正确的是( )。A? 对象是类的一个实例B? 任何一个对象只能属于一个具体的类C? 一个类只能有一个对象D 类与对象的关系和数据类型与变量的关系相似33( )的功能是对象进行初始化。A析构函数 B. 数据成员 C.构造函数 D.静态成员函数34关于友元的描述中,( )是错误的

15、。A? 友元函数是成员函数,它被说明在类体内B? 友元函数可直接访问类中的私有成员C? 友元函数破坏封装性,使用时尽量少用D? 友元类中的所有成员函数都是友元函数35了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为( )。A.public B. protected C.private D. static36派生类的对象对它的( )是可以访问的。A公有继承的基类的公有成员 B. 公有继承的基类的保护成员C. 公有继承的基类的私有成员 D. 保护继承的基类的公有成员37多继承派生类构造函数构造对象时,( )被最先调用。A派生类自己的构造函数 B虚基类的构造函数C非

16、虚基类的构造函数 D派生类中子对象类的构造函数38C+类体系中,不能被派生类继承的有( )。A.构造函数 B.虚函数 C.静态成员函数 D.赋值操作函数39编译时的多态性可以通过使用( )获得。A虚函数和指针 B重载函数和析构函数 C虚函数和对象 D虚函数和引用40下列描述中,( )是抽象类的特征。A可以说明虚函数 B可以进行构造函数重载 C可以定义友元函数 D不能说明其对象四、找出并改正以下程序段中的错误1 如下的程序输出25(有3处错误)。using namespace std;int main() int *p=new int(); coutp; delete p; return 0;2

17、、下面程序输出 “a=4 b=5 c=6”,找出并改正其中的错误(有7处错误)。#include using namespace std;class Base1 public: Base1()a=x; void showa()couta=a ; private: int a;class Base2 void Base2(int x)b=x; void showb()coutb=b ; private: int b;class Der:public Base2 public: Der(int i,int j,int k):Base1(i) void showc()coutc=c ; privat

18、e: int c;void main() Der obj; obj.showa(); obj.showb(); obj.showc(); return 0;1下面程序定义一个点类Point,输出内容为一个点的坐标“(3,4)”。(有4处错误)using namespace std;class Point public: Point(int,int); void displayxy(); private: int X,Y; ;void Point:Point(int x,int y) X=x; Y=y;void Point:displayxy() cout(X,Y)endl;int main()

19、 Point p; cout(p.X,p.Y)endl; return 0;2如下程序建立一个分数类,并具有下述功能:防止分母为0;避免分母为负;重载运算符“*”完成分数的乘法运算。(有6处错误)#include#includeclass Fraction Fraction(int x=0,int y=0); /声明带默认值的构造函数 void print(); Fraction operator (Fraction& n1,Fraction& n2); private: int n,m; /n为分子,m为分母;Fraction(int x,int y) if(y=0) coutA zero

20、m is invalidendl; exit(1); n=x; m=y; if(m0) m=-m; / 避免分母为负void Fraction:print() coutn/mendl;Fraction operator*(Fraction& n1,Fraction& n2) Fraction temp; temp.m=n1.m*n2.m; temp.n=n1.n*n2.n; return temp;int main() Fraction r1(2,3),r2(3,-5),r; r=r1*r2; coutr1*r2=;r.print(); return 0;五、写出以下程序段运行的结果1分析下面

21、的程序,特别注意构造函数与析构函数的自动调用,写出运行结果。#include using namespace std;class counter private: int value; public: counter(void); counter(void); void inc(void)value+; int getvalue(void)return value;counter:counter(void) value = 0; cout counter initializedn; counter:counter(void) cout counter destroyedn;int main(v

22、oid) counter c1, c2; c1.inc(); coutc1=c1.getvalue()n; return 0;2阅读下面的程序。画出各个类的DAG图;根据DAG图写出程序的输出结果。#include using namespace std;class B1 public: B1()coutconstructing B1endl;class B2 public: B2()coutconstructing B2 endl;class D1:public B2, virtual public B1 public: D1()coutconstructing D1endl;class D

23、2:public B2, virtual public B1 public: D2()coutconstructing D2endl;class D12:public D1, virtual public D2 public: D12()coutconstructing D12endl;int main() D12 obj; return 0;3分析下面构造函数与析构函数的调用,写出运行结果。#include using namespace std;class Point public: Point(int,int); void displayxy(); Point(); private: i

24、nt X,Y; ;/点类的实现部分Point:Point (int x,int y) X=x;Y=y; coutConstructor; displayxy();void Point:displayxy() cout(X,Y)endl;Point:Point() coutDestructor; displayxy();int main() Point p2(3,4),p1(1,2); return 0;4.阅读下面的程序。画出各个类的DAG图;根据DAG图写出程序的输出结果。#include using namespace std;class B1 public: B1()coutconstr

25、ucting B1endl;class B2 public: B2()coutconstructing B2 endl;class D1:public B2, virtual public B1 public: D1()coutconstructing D1endl;class D2:public B2, virtual public B1 public: D2()coutconstructing D2endl;class D12:public D1, virtual public D2 public: D12()coutconstructing D12endl;int main() D12

26、obj; return 0;5. #include class Base public: virtual void show()coutBase:show()endl; ;class Derived1: public Base public: void show()coutDerived1:show()endl; ;class Derived2: public Derived1 public: void show()coutDerived2:show()endl;void main() Base b; Derived1 d1; Derived2 d2; Base *ptr3=&b,&d1,&d2; for (int i=0;ishow();6.去掉上题(即第5小题)程序中的 “ virtual”关键字,运行结果如何? 六、编程1.声明一个Rectangle(矩形)类,有数据成员width(宽)和height(高),有求面积的成员函数area()。创建一个Rectangle的对象进行测试。2.定义一个triangle(三角形)类,重载运算符“”,使之用于两个三角形面积大小的比较。并写一个main()函数测试它。3.写一个求两个数据的最大值的函数模板,并利用它分别求出3和4、a和b、”photo”和”shop”等三组不同类型的数据的最大值。4定义一个三角形类triangle,

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

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