C++期末复习题

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

一、填空题1、开发C++程序与开发其他高级语言的程序一样,包括编辑、编译、①链接和②运行四个步骤。2、C++语言中的标准输出流对象是cout③,在程序中用于代表标准输出设备。3、对于已存在的定义“int*ptr=newint[10];”,应该用delete[]ptr;④语句释放动态内存空间。4、C++语言提供了处理异常的有效机制,通过⑤throw抛出异常,通过⑥try检测异常、通过catch捕捉并处理异常。5、类的成员有3种访问属性,其默认的访问属性为private⑦;访问属性为___⑧protected的成员既可被派生类继承又保持了封装和信息隐藏性。(请填关键字)6、C++支持两种多态性,其中函数重载和运算符重载用于实现静态多态性⑨,而虚函数用于实现⑩动态多态性。7、面向对象程序设计思想中的几个主要特征是:抽象和封装性①、②继承性、③多态性。8、C++为类的成员函数提供了一个名字为this④的指针,当创建一个对象时,系统将这种指针初始化为指向该对象。9、假设AB为一个类,则该类的拷贝构造函数的原型是⑤AB(AB&);。10、通过在虚函数参数表后加⑨virtual,可以定义为纯虚函数。含有纯虚函数的类称为⑩抽象类。二、单选题1、假设已有定义:constchar*name=chen;下面语句中错误的是A。A、name[3]='a';B、name=lin;C、name=newchar[5];D、coutname[3];2、设有语句voidf(inta[10],int&x);inty[10],*py=y,n=10;则对函数f的正确调用语句是B。A、f(py[10],n);B、f(py,n);C、f(*py,&n);D、f(py,10);3、下列不正确的重载函数是C。A、intprint(intX);和voidprint(floatX);B、intdisp(intX);和chardisp(intY)const;C、voiddisp(char*str,intY);和intdisp(char*s,intX);D、intview(intX,inty);和intview(intX);4、有关this指针的描述中,错误的是D。A、this指针可以在程序中显式使用B、this指针是在使用对象时由系统自动生成C、this指针是指向当前对象的指针D、this指针是指向成员函数的指针5、关于成员函数特征的下列描述中,A是错误的。A、成员函数一定是内联函数B、成员函数可以重载C、成员函数可以设置缺省参数值D、成员函数可以是静态的6、以下关于构造函数的叙述不正确的是D。A、构造函数名必须和类名一致B、构造函数在定义对象时自动执行C、构造函数无任何函数类型D、一个类的构造函数有且仅有一个7、下列哪一项不能访问基类的保护成员B。A、基类的友元函数B、派生类的对象C、基类的成员函数D、公有派生类的成员函数8、下面有关基类与公有派生类的赋值兼容原则,正确的是。A、公有派生类对象不能赋给基类对象B、基类对象能赋给其公有派生类的引用C、基类对象不能赋给公有派生类对象D、公有派生类对象地址不能赋给基类指针变量9、______是一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生类都必须定义自己的版本。A、虚析构函数B、虚构造函数C、纯虚函数D、静态成员函数10、假定要对类AB以友元函数形式重载加号运算符,实现两个AB类对象的加法,并返回相加结果,则该函数的声明语句为:。A、friendABoperator+(AB&a,AB&b);B、friendoperator+(ABa);C、friendABoperator+(AB&a);D、friendAB&operator+();11、下列定义引用类型变量时,是正确的。已知:intk=1000;A、int&x=k;B、char&y;C、int&z=1000;D、float&t=&k;12、下列几个运算符以类的成员函数形式重载时,哪一个与其他3个的形式参数个数不一样。A、后缀++B、前缀++C、+D、/13、关于析构函数的定义,正确的是。A、析构函数可以有一个或多个参数B、析构函数返回类型是voidC、析构函数无参数,也不可重载D、析构函数体中必须有delete14、下列哪一项能声明为虚函数。A、静态函数B、友元函数C、构造函数D、析构函数15、考虑下面的函数原型:voidfun(inta,intb=7,charz='*');下面函数调用中不合法的。A、fun(5);B、fun(5,8);C、fun(5,'#');D、fun(,,'*');16、下列语句中错误的是。A、int*p=newint(10);B、int*p=newint[40](10);C、int*p=newint;D、int*p=newint[10];17、当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为_______。A、ios::inB、ios::outC、ios::trunkD、ios::binary三、读程题1、以下程序运行后的输出结果第一行是5,第二行是100。#includeiostreamusingnamespacestd;inti=0;voidmain(){inti=5;coutiendl;::i=i*20;cout::iendl;}2、以下程序运行后的输出结果第一行是40,第二行是11,第三行是11。#includeiostreamusingnamespacestd;classbase{intn;public:base(inti){n=i;}intgetn(){returnn;}friendintadd(base&s1,bases2);};intadd(base&s1,bases2){intresult=s1.n+s2.n;intt=s1.n;s1.n=s2.n;s2.n=t;returnresult;}voidmain(){baseA(29),B(11);coutadd(A,B)endl;coutA.getn()endl;coutB.getn()endl;}3、以下程序运行后的输出结果第一行是9,第二行是__9.4_。#includeiostreamusingnamespacestd;templateclassTTfun(Tx[],intn){inti;Tvalue=x[0];for(i=1;in;i++)if(valuex[i])value=x[i];returnvalue;}voidmain(){intarrayA[]={5,8,2,9,1,7};doublearrayB[]={3.8,5.8,2.7,9.4,1.6};coutfun(arrayA,6)endl;coutfun(arrayB,5)endl;}4、以下程序运行后的输出结果第一行是(8),第二行是(9)。#includeiostreamusingnamespacestd;classbase{public:virtualvoidfun(void){coutbase::funendl;}};classdivide:publicbase{public:voidfun(void){coutdivide::funendl;}};voidmain(void){divided;baseb1;base&b2=d;b2.fun();b1.fun();}5、以下程序运行后有多行输出结果,其中第一行是(10),第二行是(11)第三行是(12),第四行是(13)。#includeiostreamusingnamespacestd;classA{intn;public:A(){coutconstructingAendl;}~A(){coutdestructingAendl;}};classB:publicA{intn;Aa;public:B(){coutconstructingBendl;}~B(){coutdestructingBendl;}};voidmain(){Bb;}6、以下程序运行后的输出结果第一行是(14),第二行是(15)。#includeiostreamusingnamespacestd;constdoublePI=3.14159;classShape//定义抽象基类Shape{public:virtualvoiddisplay()=0;//声明纯虚函数};classRectangle:publicShape//定义派生矩形类Rectangle{public:Rectangle(doubleh,doublew):hight(h),width(w){}voiddisplay()//纯虚函数的实现代码{couthight*widthendl;}private:doublehight,width;};classCircle:publicShape//定义派生圆类Circle{public:Circle(doubler):radius(r){}voiddisplay()//纯虚函数的实现代码{coutPI*radius*radiusendl;}private:doubleradius;};voidmain(){Shape*ptr[2];//定义抽象类的指针数组ptr[0]=newRectangle(15,2);//创建Rectangle类的对象ptr[1]=newCircle(1);//创建Circle类的对象ptr[0]-display();//调用Rectangle类的display函数ptr[1]-display();//调用Circle类的display函数delete[]ptr[0];delete[]ptr[1];}7、以下程序运行后输出的第一行是,第二行是,第三行是。#includeiostream.hclassSample{intx,y;public:Sample(inta=0,intb=0){x=a;y=b;}Sample(constSample&S){x=2*S.x;y=2*S.y;}voiddisp(){coutxyendl;}};voidf(SampleS){S.disp();}voidmain(){Samples1(1,3),s2=s1;s1.disp();s2.disp();f(s1);}8、以下程序运行后输出的第一行是,第二行是第三行是,第四行是。#includeiostream.hclassBase{public:intx;Base(intx=8){this-x=x;}voidprint(){coutBase::xisxendl;}};classDerived1:publicBase{public:voidprint(){coutDerived1::xisxendl;}};classDerived2:privateBase{public:Derived2(intx):Base(x*3){}voidprint(){coutDerived2::xisxendl;}};voidmain(){BaseobjB(10),*p;Derived1objD1;Derived2objD2(15);p=&objD1;objB.print();objD1.print();objD2.print();p-print();}9、以下程序运行后输出的第一行是,第二行是____。#includeiostream.hclasscord{intx;inty;public:cord(inti=0,intj=0){x=i;y=j;}voidprint(){coutx=x,y=yendl;}cordoperator++();};cordcord::operator++(){++x;++y;return*

1 / 11
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功