C++复习题.docx
- 文档编号:6423206
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:15
- 大小:24.60KB
C++复习题.docx
《C++复习题.docx》由会员分享,可在线阅读,更多相关《C++复习题.docx(15页珍藏版)》请在冰豆网上搜索。
C++复习题
一、单选题
1.对于类(结构体)中定义的成员,其隐含访问权限为____C(A)____。
Apublic Bprotected Cprivate Dstatic
2.假定AA为一个类,inta()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为(A)。
A.intAA:
:
a() B.intAA:
a()C.AA:
:
a() D.AA:
:
inta()
3一个类的构造函数通常被定义为该类的(C)成员。
A.私有 B.保护C.公用 D.友元
4.调用一成员函数时,使用动态联编的情况是(b)
A.通过对象调用一虚函数 B。
通过指针或引用调用一虚函数
C。
通过对象调用静态函数 D。
通过指针或引用调用一静态函数
5.假定一个类构造函数为:
“A(intaa=1,intbb=0){a=aa;b=bb;}则执行"Ax(4)"后,x.a和x.b值分别是:
(c)
A.1,0 B.1,4 C.4,0 D.4,1
6在派生类中能直接访问基类的(d)
A。
公有成员,私有成员 B。
保护成员,私有成员 C。
不可访问成员,私有成员D。
公有成员,保护成员
7.C++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是(B)
A)面向过程 B)面向对象 C)安全性 D)复用性
8.下面有关重载函数的说法中正确的是(B)
A)重载函数必须具有不同的返回值类型; B)重载函数形参个数必须不同;
C)重载函数必须有不同的形参列表 D)重载函数名可以不同;
9.下列关于构造函数的描述中,错误的是(D)
A)构造函数可以设置默认参数; B)构造函数在定义类对象时自动执行
C)构造函数可以是内联函数; D)构造函数不可以重载
10.下面描述中,表达错误的是(B)
A)公有继承时基类中的public成员在派生类中仍是public的
B)公有继承是基类中的private成员在派生类中仍是private的
C)公有继承时基类中的protected成员在派生类中仍是protected的
D)私有继承时基类中的public成员在派生类中是private的
11.应在下列程序划线处填入的正确语句是()
#include
class Base
{ public:
void fun(){cout<<"Base:
:
fun"< }; class Derived: public Base { void fun() {____C_____ //显示调用基类的函数fun() cout<<"Derived: : fun"< } }; A)fun(); B)Base.fun(); C)Base: : fun(); D) Base->fun(); 12.假定AB为一个类,则执行“AB a(4),b[3],*p[2];”语句时,自动调用该类构造函数的次数为 B 。 A.3 B.4 C.6 D.9 13、假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为: B 。 A. AB operator+(AB &a,AB &b) B. AB operator+(AB &a) C. operator+(AB a) D. AB &operator+() 14.下面选项中,不是类的成员函数为________。 A)构造函数B)析构函数 C)友元函数D)复制构造函数 15.下面对析构函数的正确的描述是________。 A)系统可以提供默认的析构函数B)析构函数必须由用户定义 C)析构函数可以重载D)析构函数可以设置默认参数 16.关于类和对象不正确的说法是__________。 A)类是一种类型,它封装了数据和操作B)对象是类的实例 C)一个类的对象只有一个D)一个对象必属于某个类 17.在类的外部,可以被访问的成员有_______。 A)所有类成员B)public的类成员 C)private或protected的类成员D)public或private的类成员 18.声明一个类的对象时,系统自动调用一个函数;撤消对象时,系统自动调用一个函数;该函数为_______。 A)成员函数;构造函数B)复制构造函数;析构函数 C)构造函数;复制构造函数D)析构函数;析构函数 19.下列运算符中,不能重载的运算符是。 A)+B)*C)>>D)? : 20.下列函数原型声明中,__________声明了fun为纯虚函数。 A)voidfun()=0;B)virtualvoidfun()=0; C)virtualvoidfun();D)virtualvoidfun(){}; 21.C++语言对C语言进行了很多改进,C++语言相对于C语言的最根本的变化是 A: 增加了一些新的运算符 B: 允许函数重载,并允许设置缺省参数 C: 规定函数说明符必须用原型 D: 引进了类和对象的概念 22.下列运算符中,在C++语言中不能重载的是 A)*B)>=C): : D)/ 23. 填空题(程序填空) 1.使用const语句定义一个标识符常量时,则必须对它同时进行__初始化________。 2.若需要把一个函数”voidF();”定义为一个类AB的友元函数,则应在类AB的定义中加入一条语句: _friendvoidF();____ 3.若要在程序文件中进行标准输入输出操作,则必须在开始的#include命令中使用____________头文件。 4.在定义类对象的语句执行时,系统在建立每个对象的过程中将自动调用该类的_构造函数_,使其初始化。 5.C++支持两种多态性: _编译__时的多态性和运行时的多态性。 6.若在类的定义体中只给出了一个成员函数的原型,则在类外给出完整定义时,其函数名前必须加上类名和两个_: : _分隔符。 7.重载运算符时,其原有的优先级、__结合方向_以及操作对象的个数不允许改变 8.如果重载了运算符+,则相应运算函数名是(operator+) 9.为了实现多态性,派生类需要重新定义基类中的(成员函数) 10.编译时多态性通过(重载)函数实现,运行时的多态通过(虚函数)实现。 11.派生类中实现基类成员初始化,需由派生类的构造函数调用(基类的构造函数)来完成。 12.在用class定义一个类时,数据成员和成员函数的默认访问权限是 private 程序填空 阅读下列程序,在处填入适当内容,使程序完整 1.试求出1000以内的“完全数”。 (提示: 如果一个数恰好等于它的因子之和(因子包括1,不包括数本身),则称该数为“完全数”。 如: 6的因子是1、2、3,而6=1+2+3,则6是个“完全数”。 ) #include #include voidmain() { inti,a,m; for(i=1;i<1000;i++) { for(m=0,a=l;a<=i/2;a++) if(! (i%a)) (1); if( (2))cout< } } 2.用“起泡法”对输入的10个字符排序后按从小到大的次序输出。 #defineN10 #include voidmain() { inti,flag; for(i=0;i<10;i++) cin>>str[i]; sort(_ (1)__); for(i=0;i cout< cout< } voidsort(charstr[N]) {inti,j; chart; for(j=1;j for(i=0;i if(str[i]> (2)) {t=str[i]; ______(3)______; ______(4)______; } } 3.下面是检验是检验输入的字符是大写还是小写或者非字母字符,请填空。 #include usingnamespacestd; intfun(charch) {inti; if((ch>=’a’)&&(ch<=’z’)i=1; elseif( (1))i=2; elsei=3; (2); } intmain() {inti;charch; cout<<“请输入一个字符: ”; cin>>ch; i=fun(ch); if(i==1) cout<<“是小写字母: ”< elseif((3)) cout<<“是大写字母: ”< elsecout<<“是其它字符: ”< 4.函数pi的功能是根据以下近似公式求 值。 请在下面的程序中填空,完成求 的功能。 #include #include usingnamespacestd; doublepi(longn) {doubles=0.0; longi; for(i=1;i<=n;i++) (1); (2); } intmain() {longx; cout<<“请输入一个长整数: ”; (3); cout< cout< } 程序改错 1.题目: 类B是类A的友元类,程序的运行结果为: 20 10 -------------------------------------------------------- 注意: 不可以增加或删除程序行,也不可以更改程序的结构。 ------------------------------------------------------*/ #include #include classA { private: intx; public: A(inta){x=a;} /***********FOUND***********/ classB; }; /***********FOUND***********/ friendB { private: intx; public: B(inta){x=a;} /***********FOUND***********/ voidset(A&aa){x=A.x;} intget(){returnx;} }; voidmain() { Aa(10); Bb(20); cout< b.set(a); /***********FOUND***********/ cout< } 2.-------------------------------------------------------- 题目: 将运算符"+"重载为类的成员(友元函数)函数,实现类的两个对象的相 加运算。 -------------------------------------------------------- 注意: 不可以增加或删除程序行,也不可以更改程序的结构。 ------------------------------------------------------*/ #include classsample { private: intx; public: sample(){} sample(inta) { x=a; } voiddisp() { cout<<"x="< } /***********FOUND***********/ sample+(sample&s); }; /***********FOUND***********/ voidsample: : operator+(sample&s) { /***********FOUND***********/ exit(x+s.x); } voidmain() { sampleobj1(10); sampleobj2(20); sampleobj3; obj3=obj1+obj2; /***********FOUND***********/ disp(); } 3.题目: 以下程序中函数fun1和fun2为两个虚函数,类derive为base 的派生类。 程序的运行结果为: base: : fun1() base: : fun2() -------------------------------------------------------- 注意: 不可以增加或删除程序行,也不可以更改程序的结构。 ------------------------------------------------------*/ #include classbase { public: virtualvoidfun1()=0; /***********FOUND***********/ abstractvoidfun2()=0; { cout<<"base: : fun2()"< } }; /***********FOUND***********/ classbase: fun1() { cout<<"base: : fun1()"< } classderive: publicbase { public: voidfun1(){base: : fun1();} voidfun2(){base: : fun2();} /***********FOUND***********/ } voidmain() { /***********FOUND***********/ based; d.fun1(); d.fun2(); } 4.题目: 以下程序的输出结果为: 调用构造函数 10: 20 调用复制构造函数 10: 20 调用析构函数 调用析构函数 -------------------------------------------------------- 注意: 不可以增加或删除程序行,也不可以更改程序的结构。 ------------------------------------------------------*/ #include classcopy {private: intx;inty; public: /***********FOUND***********/ copy(inta,b) {x=a;y=b; cout<<"调用构造函数"< } /***********FOUND***********/ copy(constcopyc) {x=c.x; y=c.y; /***********FOUND***********/ y=c; cout<<"调用复制构造函数"< } ~copy(){cout<<"调用析构函数"< voidprint(){cout< "< }; voidmain() {copyobj1(10,20); obj1.print(); /***********FOUND***********/ copyobj2; obj2.print(); } 读程序写结果 1.#include usingnamespacestd; classS {inta; public: S(intaa=10) {a=aa; cout<<"constructor! "< ~S(){cout<<"destructor!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 复习题
![提示](https://static.bdocx.com/images/bang_tan.gif)