C++复习.docx
- 文档编号:8020236
- 上传时间:2023-05-12
- 格式:DOCX
- 页数:11
- 大小:20.81KB
C++复习.docx
《C++复习.docx》由会员分享,可在线阅读,更多相关《C++复习.docx(11页珍藏版)》请在冰点文库上搜索。
C++复习
一、单项选择题
1.C++是一个面向()的程序设计语言.
A.过程B.函数C.对象D.类
2.一个类是由一批()及其对其操作的()组成.
A.数据成员、成员函数B.成员变量、成员语句
C.成员表达式、成员过程D.成员对象、成员过程
3.面向对象程序设计的主要特征是().
A.类、引用、重载B.封装、重载、多态
C.对象、封装、继承D.封装、继承、多态
4.对C++语言和C语言的兼容性,描述正确的是()
A.C++语言兼容CB.C++语言部分兼容C语言
C.C++语言不兼容C语言D.C语言兼容C++语言
5.在C++中使用流进行输入输出,其中用于屏幕输出的对象是()
A.err B.cin C.coutD.cfile
6.对使用关键字new所开辟的动态存储空间,释放时必须使用()
A.freeB.createC.deleteD.realse
7.如没有使用private关键字定义类的数据成员,则默认为()
A.privateB.publicC.protectedD.friend
8.使用值传递方式将实参传给形参,下列说法正确的是()
A.形参是实参的备份B.实参是形参的备份
C.形参和实参是同一对象D.形参和实参无联系
9.下列描述错误的是()
A.c是一种面向结构化程序设计的语言
B.c++是一种面向对象的程序设计的语言
C.c++是一种通用的程序设计语言
D.c语言是一种面向对象的程序设计语言
10.设存在函数intmax(int,int)返回两参数中较大值,若求22,59,70三者中最大值,下列表达式不正确的是()
A.intm=max(22,max(59,70));
B.intm=max(max(22,59),70);
C.intm=max(22,59,70);
D.intm=max(59,max(22,70));
11.c++语言规定:
在一个源程序中,main函数的位置()
A.必须在最开始
B.必须在系统调用的库函数的后面
C.可以任意
D.必须在最后
12.intFunc(int,int);不可与下列哪个函数构成重载()
A.intFunc(int,int,int);
B.doubleFunc(int,int);
C.doubleFunc(double,double);
D.doubleFunc(int,double);
13.c++中cin是()
A.一个标准的语句
B.预定义的类
C.预定义的函数
D.预定义的对象
14.类的私有成员可在何处访问()
A.通过子类的对象访问B.本类及子类的成员函数中
C.通过该类对象访问D.本类的成员函数中
15.如果没有为一个类定义任何构造函数的情况下,下列描述正确的是()
A.编译器总是自动创建一个不带参数的构造函数
B.这个类没有构造函数
C.这个类不需要构造函数
D.该类不能通过编译
16.一个类可包含析构函数的个数是()
A.0个B.1个C.至多一个D.0个或多个
17.将c++源程序进行()可得到目标文件。
A.编辑
B.编译
C.链接
D.拼接
18.下列关于类的权限的描述错误的是()
A.类本身的成员函数只能访问自身的私有成员
B.派生类的成员函数不能访问从基类继承而来的私有成员
C.普通函数不能直接访问类的公有成员,必须通过对象访问
D.一个类可以将另一个类的对象作为成员
19.在编译指令中,宏定义使用哪个指令()
A.#includeB.#defineC.#ifD.#else
20.设类A将其它类对象作为成员,则建立A类对象时,下列描述正确的是()
A.A类构造函数先执行B.成员构造函数先执行
C.两者并行执行D.不能确定
21.设类A继承类B,则建立A类对象时,下列描述正确的是()
A.A类构造函数先执行B.B类的构造函数先执行
C.A与B两者同时执行D.不能确定
22.执行下面语句后,输出结果为(C)。
cout< : showbase)<<047< A.047B.47C.0x27D.027 23.对于友元描述正确的是() A.友元是本类的成员函数B.友元不是本类的成员函数 C.友元不是函数D.友元不能访问本类私有成员 24.在哪种派生方式中,派生类可以访问基类中的protected成员() A.public和privateB.public和protected C.protected和privateD.仅protected 25.在哪种派生方式中,派生类不可以访问基类中的protected成员() A.publicB.protectedC.privateD.protected和private 26.已知“inta,&ra=a;”关于ra的描述中正确的是() A.ra是int型变量a的地址值 B.a是int型变量ra的地址值 C.ra是int型变量a的引用 D.ra是int型变量a的指针 27.下列关于类和对象的说法中,正确的是() A.类与对象没有区别 B.要为类和对象分配存储空间 C.对象是类的实例,为对象分配存储空间而不为类分配存储空间 D.类是对象的实例,为类分配存储空间而不为对象分配存储空间 28.关于this指针的描述中,错误的是() A.this指针是指向对象的指针 B.this指针是在使用对象引用成员函数时系统自动生成的 C.this指针是指向成员函数的指针 D.this指针可以在程序中显示使用 29.下列关于构造函数的说法中不正确的是() A.构造函数名字和类的名字一样 B.构造函数在说明类对象时自动执行 C.构造函数无任何函数类型 D.构造函数有且只有一个 30.通常的拷贝初始化构造函数的参数是() A.某个对象名 B.某个对象的成员名 C.某个对象的引用 D.某个对象的指针名 二、判断正误 1.()C++中的主函数main一定得返回一个值. 2.()C++中可以使用结构定义代替类定义. 3.()main()不能带参数. 4.()类的protected类型数据成员可以被其自身类外的友员函数修改其值. 5.()cout可以代替printf,利用cout可以简便的格式输出类. 6.()一个类的数据成员如果希望不允许继承类对其访问,应该将其定义为private类型. 7.()一个类的数据成员如果希望允许继承类对其访问,但不允许类外被访问,应该将其定义为protected类型. 8.()类的析构函数可以被声明为虚函数. 9.()一个类的友元函数也可以被别的类同时定义为友元函数. 10.类的成员函数只能定义成公有的 11.()引用不是独立的变量,因此在建立引用时并不给它分配单独存储单元,只是声明它与被引用的某变量的等价关系. 12.()函数模板与类模板的定义完全相同. 13.()类的数据成员可以在声明时给初值初始化. 14.()如果用户自己没有定义构造函数,则C++系统会自动生成一个构造函数. 15.()类的构造函数不能被用户直接调用,一般被声明为PUBLIC. 16.()类的析构函数的作用是在对象完成使命以后删除该类的对象. 17.()同一个类可以有多个构造函数和多个析构函数. 18.()抽象类就是包含虚函数的类 19.()一个函数可以被多个不同类声明为友员函数,这个友员函数可以访问这些类的私有数据成员. 20.()类模板是类的抽象,类是类模板的实例. 21.不能定义抽象类的对象,但可定义指向抽象类的指针。 22.派生类成员函数可直接访问从基类继承而来的任何成员 23.C++运算符均可重载 24.C++运算符均可按成员方式重载 25.this在程序中只能引用,不能修改 26.C++是比C更通用的程序设计语言 27.通过重载,可改变运算符的优先级 28.行注释可出现在程序的任何位置 29.要直接输出对象,必须重载运算符“<<” 30.只有用作基类的类才能包含“protected”成员 三、填空题 1.设要打开一个文件输出流对象myFile与文件“f: \mydata.txt相关联,所用的C++语句是: __________。 2.如果在一个C++程序中使用cout,那么在C++程序头至少要使用#include________________。 3.运算符[]只能用________运算符来重载,不能用友元运算符来重载。 4.定义虚函数所用的关键字是________。 5.二维数组类型inta[20][30]如果作为函数参数传递,函数中用于传递二维数组的形式参数格式定义是________________。 6.在C++中利用变量定义,定义一个能存放至多20个char的字符串,实现此操作的语句是________。 7.类的继承是指子类继承基类的________和成员函数。 8.不同对象可以调用相同名称的函数,但可导致完全不同的行为的现象称为________。 9.________指令指示编译器可以有选择地编译或不编译一段C++源程序。 10.若要把voidfun()定义为类A的友元函数,则应在类A的定义中加入语句____________。 11.设在程序中使用如下语句申请了一个对象数组: Point*ptr=newPoint[2]; 则在需要释放ptr指向的动态数组对象时,所使用的语句是________。 12.在保护派生中,基类权限为_____的成员在派生类中不可被访问。 13.类A有如下成员函数 intA: : fun(doublex){return(int)x/2;} intA: : fun(intx){returnx*2;} 设a为类A的对象,在主函数中有ints=a.fun(6.0)+a.fun (2),则执行该语句后,s的值为________。 14.面向对象程序设计的_______机制提供了重复利用程序资源的一种途径。 15.将指向对象的指针作为函数参数,形参是对象指针,实参是对象的________。 16.在使用string类的find成员函数来检索主串中是否含有指定的子串时,若在主串中不含指定的子串,find函数的返回值是________。 17.在C++中,声明布尔类型变量所用的关键字是________。 18.若p所指单元的内容为10,执行下列代码: x=*p++以后 cout< 19.C++语言中可以实现输出一个换行符的语句是________。 20.面向对象方法具有的三大特征是______、_______和_______。 21.任何类中允许有三种访问权限的数据,这三种访问权限分别是___、_____和_____。 22.类中的数据成员和成员函数的默认访问权限是_____。 结构体中成员的默认访问权限为_____。 23.在类内部定义的_____和_____数据不能被不属于该类的成员函数来存取,定义为_____的数据,可以在类的外部进行存取。 四、写出程序的执行结果 1. #include voidmain() { inta[]={10,20,30,40},*pa=a; int*&pb=pa; pb++; cout<<*pa< } 解: pa为数组的指针,首先指向a[0],pb是pa的引用,当执行pb++时,也使pa指向了a[1],所以输出为: 20 2. #include classSample { intx; public: Sample(){}; Sample(inta){x=a;} Sample(Sample&a){x=a.x+++10;} voiddisp(){cout<<"x="< }; voidmain() { Samples1 (2),s2(s1); s1.disp(); s2.disp(); } 解: Sample类的Sample(Sample&a)构造函数是一个拷贝构造函数,将a对象的x增1然后加上10后赋给当前对象的x,由于a是引用对象,所以输出为: x=3//++运算的结果 x=12//2+10 3.以下程序的输出结果为_______ #include voidf(int&a,int&b){intt=a;a=b;b=t;} voidmain() {intx=100,y=200 ; f(x,y) ; cout< } A.100,100B.100,200C.200,100D200,200 4.一下程序的执行结果是() #include usingnamespacestd; classSample { inti; public: Sample(){i=1;cout< voiddisp(){cout<<++i;} ~Sample(){cout< }; intmain() { Samples; s.disp(); } A.123B.133C.222D.333 5.以下程序的输出结果是________ #include usingnamespacestd; classA { public: virtualvoidf1(){cout<<"Af1"< virtualvoidf2(){cout<<"Af2"< voidf3(){cout<<"Af3"< voidf4(){cout<<"Af4"< }; classB: publicA { public: virtualvoidf1(){cout<<"Bf1"< virtualvoidf2(intx){cout<<"Bf2"< virtualvoidf3(){cout<<"Bf3"< voidf4(){cout<<"Bf4"< }; intmain() { A*p; Bb; p=&b; p->f1(); p->f2(); p->f3(); p->f4(); return0; } 五、程序设计 1.写一个求一批数据中最大数的C++程序。 (10分) 2.定义一个类Student,包含学号No、姓名Name、性别Sax、语文Lang、数学Math、外语ForLang、总分Sum这七项数据成员,还有输入单科inputscore、计算总分sumscore、输出总分outputsum这三个函数,要求在构造函数中对学生对象输入学号、姓名、性别这三项,在计算总分函数中能够计算语文、数学、外语三项成绩的和。 (15分) 3.写一个描述星球的类,包含星球名称、自身半径、与地球的距离,密度等属性及求体积、表面积和质量等成员方法。 4.有一某班的C++成绩单,求平均成绩 六、程序填空 1.以下程序判断输入的字符串是否“回文”,若是回文,输出YES。 intmain() {chars[81],cr,*pi,*pj; inti,j,n; cin.getline(s);n=strlen(s); pi=________;pj=________;//pi指向串开始,pj指向最后 while(*pi==‘‘)_________; while(*pj==‘‘)________; while((___________)&&(*pi==*pj)) {pi++;_______;} if((pi elsecout<<“YES\n”; } (1)s (2)s+n-1(3)pi++ (4)pj--(5)pi 2.以下程序求两个数的大者,请填空。 intmain(void) {int*p1,*p2; p1=___________; p2=___________; cin>>_______________; if(*p2>*p1)*p1=*p2; deletep2; cout<<“max=”<<_______< return0; } (1)newint (2)newint(3)*p1>>*p2(4)*p1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 复习