c++.docx
- 文档编号:7730682
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:15
- 大小:20.54KB
c++.docx
《c++.docx》由会员分享,可在线阅读,更多相关《c++.docx(15页珍藏版)》请在冰豆网上搜索。
c++
一、填空题(每空1分,共10分。
)
1、面向对象程序设计有四个主要特点,即抽象、封装、_继承___和_多态性_。
2、C++中任何一个数组的名字是一个常量指针,该指针的值是该数组首元素的地址。
3、静态数据成员是类的所有对象中共享的成员,静态数据成员初始化与一般数据成员初始化不同。
4、非成员函数应声明为类的_友元___函数才能访问这个类的private成员。
5、函数调用时的参数传递主要分为单向传递和双向传递,前者的特点是形参的改变不影响实参。
6、派生类中的成员不能直接访问基类中的__私有__成员。
7、在用class定义一个类时,数据成员和成员函数的默认访问权限是__private(私有)__。
8、运算符重载函数可能是类的__成员__函数,也可以是类的_友元___函数,还可以是普通函数。
9、函数重载时要求同名函数的参数个数或类型不同,否则无法确定是哪个函数。
10、用流对象的成员函数控制输出格式时,用于设置字段宽度的流成员函数的名称是_width___,与之作用相同的控制符名称是_setw___。
11、含有纯虚函数的类称为__抽象类__。
12、在字长为32位的机器中,sizeof(char)=1字节,sizeof(unsignedint)=4字节.
13、C++语法规定,任何变量在使用前必须先定义;变量有两个值,一个是变量本身的值,另一个是变量的地址值。
14、若有chara[80];则cin>>a表示从键盘上读入一个__字符串__到数组a中。
18、若希望用一个已有对象来构造另一个同类型的对象,可以使用__拷贝构造函数__来实现。
19、静态成员属于__类__,而不属于__任何一个对象__,它被同一个类的所有对象共享。
20、类的继承方式有__public__继承、_protected___继承和__private__继承。
21、重载运算符的含义必须清楚,不能有__二义性__。
22、按照联编进行阶段的不同,联编方法可分为两种:
_动态联编___和__静态联编__。
23、当基类中的某个成员函数被声明为虚函数后,此虚函数就可以在一个或多个派生类中被重新定义,在派生类中重新定义时,其函数原型,包括返回类型、_函数名___、__参数个数__、参数类型以及参数的顺序都必须与基类中的原型完全相同。
24、C++的I/O是以字节流的形式实现的,每个C++编译系统都带有一个面向对象的输入/输出软件包,这就是I/O流类库。
二、选择题(每小题1分,共20分。
)
1、下列关于C++函数的叙述中,正确的是(C)。
A)每个函数至少要具有一个参数B)每个函数都必须返回一个值
C)函数在被调用之前必须先声明D)函数不能自己调用自己
2、下列关于类和对象的叙述中,错误的是(A)。
A)一个类只能有一个对象B)对象是类的具体实例
C)类是对某一类对象的抽象D)类和对象的关系是一种数据类型与变量的关系
3、在C++中,用于实现运行时多态性的是(D)。
A)内联函数B)重载函数C)模板函数D)虚函数
4、下列关于运算符重载的叙述中,正确的是(B)。
A)通过运算符重载,可以定义新的运算符B)有的运算符只能作为成员函数重载
C)若重载运算符+,则相应的运算符函数名是+D)重载二元运算符时,必须声明两个形参
5、对于语句cout< A)“cout”是一个输出流对象B)“endl”的作用是输出回车换行 C)“x”是一个变量D)“<<”称作提取运算符 6、有如下类声明,则类MyDERIVED中保护的数据成员和成员函数的个数是(B)。 classMyBASE {private: intk; public: voidset(intn){k=n;} intget()const{returnk;}}; classMyDERIVED: protectedMyBASE {protected: intj; public: voidset(intm,intn){MyBASE: : set(m);j=n;} intget()const{returnMyBASE: : get()+j;}}; A)4B)3C)2D)1 7、已知在一个类体中包含如下函数原型: Volumeoperator-(Volume)const;,下列关于这个函数的叙述中,错误的是(B)。 A)这是运算符-的重载运算符函数B)这个函数所重载的运算符是一个一元运算符 C)这是一个成员函数D)这个函数不改变类的任何数据成员的值 8、执行如下的程序段后,输出结果是(A)。 cout.fill('*');cout.width(6);cout.fill('#');cout<<123< A)###123B)123###C)***123D)123*** 9、在下列函数原型中,可以作为类AA构造函数的是(D)。 A)voidAA(int);B)intAA();C)AA(int)const;D)AA(int); 10、下面四个选项中,(A)是用来声明虚函数的。 A)virtualB)publicC)includeD)usingnamespace 11、以下(C)成员函数表示纯虚函数。 A)virtualintvf(int);B)voidvf(int)=0; C)virtualvoidvf()=0;D)virtualvoidvf(int){} 12、有如下类声明: classXA {private: intx; public: XA(intn){x=n;}}; classXB: publicXA {private: inty; public: XB(inta,intb);}; 在构造函数XB的下列定义中,正确的是(B)。 A)XB: : XB(inta,intb): x(a),y(b){}B)XB: : XB(inta,intb): XA(a),y(b){} C)XB: : XB(inta,intb): x(a),XB(b){}D)XB: : XB(inta,intb): XA(a),XB(b){} 13、在表达式x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。 则operator+有个参数,operator*有参数。 (C) A)2、2B)2、1C)1、2D)1、1 14、以下能正确定义数组并正确赋初值的语句是(D) A.intN=5,b[N][N]; B.inta[2]={{1},{3},{4},{5}}; C.intc[2][]={{1,2},{3,4}}; D.intd[3][2]={{1,2},{3,4}}; 15、若数组名作实参而指针变量作形参,函数调用时实参传给形参的是D A.数组的长度 B.数组第一个元素的值 C.数组所有元素的值 D.数组第一个元素的地址 16、对于动态分配内存空间描述正确的是D A.使用new运算符分配的内存空间的长度必需是常量 B.delete运算符可以释放动态的存储空间和静态的存储空间 C.由new分配的内存空间是不连续的 D.delete运算符只能释放由new分配的动态存储空间 17、能够释放对象所占资源的是(A) A.析构函数B.数据成员 C.构造函数D.静态成员函数 18、虚函数的定义是在基类中进行的,定义时需要冠以关键字C A.staticB.frend C.virtualD.public 19、关于构造函数特点的描述中,错误的是A A.定义构造函数必须指出类型 B.构造函数的名字与该类的类名相同 C.一个类中可定义0至多个构造函数 D.构造函数是一种成员函数 20、循环语句whlie(inti=0)i--;的循环次数是A A.0B.1C.5D.无限 21、下列关于C++标识符的命名不合法的是C A.PadB.name_1C.A#bcD._a12 22、若有以下类型标识符定义: (C) intx=2;charw='a';floaty=23.45f;doublez=45.6712; 则表达式w*x+y-z的结果类型是D A.floatB.charC.intD.double 21、若有intx=10,y=20,z=30;则执行下面语句后,x的值是B if(x>y) z=x; x=y; y=z; A.10B.20C.30D.0 22、循环语句whlie(inti=0)i--;的循环次数是A A.0B.1C.5D.无限 23、一个函数无返回值时,应选择的说明符是C A.staticB.externC.voidD.无说明符 24、对重载函数形参的描述中,错误的是D A.参数的个数可能不同 B.参数的类型可能不同 C.参数的顺序可能不同 D.参数的个数、类型、顺序都相同,只是函数的返回值类型不同 25、通常的拷贝构造函数的参数是C A.某个对象名B.某个对象成员名 C.某个对象的引用D.某个对象的指针名 26、关于构造函数特点的描述中,错误的是A A.定义构造函数必须指出类型 B.构造函数的名字与该类的类名相同 C.一个类中可定义0至多个构造函数 D.构造函数是一种成员函数 27、下面程序的运行结果为C #include intadd(inta,intb); voidmain() { externintx,y; cout< } intx=20,y=5; intadd(inta,intb) { ints=a+b; returns; } A.20B.5C.25D.编译会提示出错信息 28、若有函数说明voidfA(intm,intn);和指针变量的定义void(*p)(int,int);并且有p=fA则下列操作不正确的是D A.(*p)(3,4);B.p(3,4); C.fA(3,4);D.*p++; 29、在C++中串流类是在头文件strstrea.h中定义的,下列不属于串流类的是C A.strstreamB.ostrstream C.ofstreamD.istrstream 30、下列给字符数组进行的初始化中,不正确的是D A.chars1[]="abcd"; B.chars2[3]={'x','y','\0'}; C.chars3[]={'a','x','y','\0'}; D.chars4[6]={"xyz","mnp"}; 31、通常的拷贝构造函数的参数是C A.某个对象名B.某个对象成员名 C.某个对象的引用D.某个对象的指针名 32、下列说法不正确的是(A) A.在面向对象的程序中,对象之间只能通过函数调用实现相互通信 B.面向对象的思想鼓励程序员尽可能将变量和函数限制在局部的类中 C.C++语言的输入输出是通过函数实现的 D.任何函数,如果缺少了函数原型,C++都将无法编译 33、在C++中,封装是通过(B)来实现的 A.结构B。 类C。 模板D。 函数 34、(C)的功能是对对象进行初始化 A.数据成员B。 静态成员函数C。 构造函数D.析构函数 35、不能作为重载函数的调用依据是(D) A.参数个数B。 参数类型C。 函数类型D。 函数名称 36、对类的构造函数和析构函数描述正确的是(B) A.构造函数可以重载,析构函数不能重载 B.构造函数不能重载,析构函数可以重载 C.构造函数可以重载,析构函数也可以重载 D.构造函数不能重载,析构函数也不能重载 三、程序填空题(每空2分,共20分) P412-3 P432-4 P462-7 P492-8 例6-5: 例3-7 例3-8 1、比较两个数的大小 #include usingnamespacestd; intmain(){ intx,y; cout<<"Enterxandy: "; if(x! =y) if cout<<"x>y"< else cout<<"x else cout<<"x=y"< return0; } 四、程序阅读题(根据程序,写出其输出结果。 每题5分,共20分) 1、 例4.1 例6.2 例6.8 例6.11 例6.17 例8.1 例9.1 1、#include usingnamespacestd; classAnimal { public: Animal(intheight,intweight) { //cout<<"animalconstruct"< } ~Animal() { //cout<<"animalduccont"< } voideat() { //cout<<"eat"< } voidsleep() { //cout<<"sleep"< } voidbreathe() { cout<<"breathe"< } }; classFish: publicAnimal { public: Fish(): Animal(400,300),a (1) { //cout<<"fishconstruct"< } voidbreathe() { Animal: : breathe(); cout<<"fishbubble"< } ~Fish() { //cout<<"fishconstruct"< } private: constinta; }; voidmain() { Fishfh; fh.breathe(); } 2、#include usingnamespacestd; classAnimal { public: Animal(intheight,intweight) { //cout<<"animalconstruct"< } ~Animal() { //cout<<"animalduccont"< } voideat() { //cout<<"eat"< } voidsleep() { //cout<<"sleep"< } virtualvoidbreathe() { cout<<"breathe"< } }; classFish: publicAnimal { public: Fish(): Animal(400,300),a (1) { //cout<<"fishconstruct"< } voidbreathe() { //Animal: : breathe(); cout<<"fishbubble"< } ~Fish() { //cout<<"fishconstruct"< } private: constinta; }; voidfn(Animal*pAn) { pAn->breathe(); } voidmain() { Fishfh; Animal*pAn; pAn=&fh; fn(pAn); //fh.breathe(); } 3、#include usingnamespacestd; classAnimal { public: Animal(intheight,intweight) { //cout<<"animalconstruct"< } ~Animal() { //cout<<"animalduccont"< } voideat() { //cout<<"eat"< } voidsleep() { //cout<<"sleep"< } virtualvoidbreathe()=0 { //cout<<"breathe"< } }; classFish: publicAnimal { public: Fish(): Animal(400,300),a (1) { //cout<<"fishconstruct"< } voidbreathe() { //Animal: : breathe(); cout<<"fishbubble"< } ~Fish() { //cout<<"fishconstruct"< } private: constinta; }; voidfn(Animal*pAn) { pAn->breathe(); } voidmain() { Fishfh; Animal*pAn; pAn=&fh; fn(pAn); //fh.breathe(); } 五、编程题(共30分) 例2-2 例2-7 例2-9 例3-1 例3-7 例3-8 例3-11 例3-16 习题4-9、4-11 a)编写一个程序计算“三角形、正方形、圆形”三种图形的面积,要求: a)抽象出一个基类base;b)在其中说明一个虚函数用来求面积;c)利用派生类定义“三角形、正方形、圆形”;d)编写主函数并测试。 2、现有名为figure的基类,其中存放二维对象(三角形、矩形和圆形3个类)的各维数据,并由set_dim()设置数据,它是标准成员函数。 Show_area()为虚函数,因为计算三角形、矩形和圆形3个类对象的面积的方法是不同的,因此需要重新定义。 2、若从键盘上输入五个选择题答案,求出其正确率 #include usingnamespacestd; voidmain(void) { charkey[]={'a','c','b','a','d'}; charc; intnumcorrect=0,i; for(i=0;i<5;i++) { cin>>c; if(c==key[i]) { numcorrect+=1; } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+