您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 制造加工工艺 > C++练习题(附答案)
5.9(11)下列关于C++函数的叙述中,正确的是A)每个函数至少要具有一个参数B)每个函数都必须返回一个值C)函数在被调用之前必须先声明D)函数不能自己调用自己(12)下列关于类和对象的叙述中,错误的是A)一个类只能有一个对象B)对象是类的具体实例C)类是对某一类对象的抽象D)类和对象的关系是一种数据类型与变量的关系(13)在C++中,用于实现运行时多态性的是A)内联函数B)重载函数C)模板函数D)虚函数(14)下列关于运算符重载的叙述中,正确的是A)通过运算符重载,可以定义新的运算符B)有的运算符只能作为成员函数重载C)若重载运算符+,则相应的运算符函数名是+D)重载一个二元运算符时,必须声明两个形参(15)下列关于模板的叙述中,错误的是A)模板声明中的第一个符号总是关键字templateB)在模板声明中用和括起来的部分是模板的形参表C)类模板不能有数据成员D)在一定条件下函数模板的实参可以省略(16)对于语句coutendlx;中的各个组成部分,下列叙述中错误的是A)cout是一个输出流对象B)endl的作用是输出回车换行C)x是一个变量D)称作提取运算符(17)下列字符串中,正确的C++标识符是A)foo-1B)2bC)newD)_256(18)已知枚举类型定义语句为:enumToken{NAME,NUMBER,PLUS=5,MINUS,PRINT=10};则下列叙述中错误的是A)枚举常量NAME的值为1B)枚举常量NUMBER的值为1C)枚举常量MINUS的值为6D)枚举常量PRINT的值为10(19)执行语句序列inti=0;while(i25)i+=3;couti;输出结果是A)24B)25C)27D)28(20)要定义一个具有5个元素的一维数组vect,并使其各元素的初值依次是30,50,-88,0和0,则下列定义语句中错误的是A)intvect[]={30,50,-88};B)intvect[]={30,50,-88,0,0};C)intvect[5]={30,50,-88};D)intvect[5]={30,50,-88,0,0};(21)有如下程序:#includeiostreamvoidfun(int&x,inty){intt=x;x=y;y=t;}intmain(){inta[2]={23,42};fun(a[1],a[0]);std::couta[0],a[1]std::endl;return0;}执行后的输出结果是A)42,42B)23,23C)23,42D)42,23(22)有如下类声明:classFoo{intbar;};则Foo类的成员bar是A)公有数据成员B)公有成员函数C)私有数据成员D)私有成员函数(23)有如下类声明:classMyBASE{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;}};则类MyDERIVED中保护的数据成员和成员函数的个数是A)4B)3C)2D)1(24)已知在一个类体中包含如下函数原型:VOLUMEoperator-(VOLUME)const;,下列关于这个函数的叙述中,错误的是A)这是运算符-的重载运算符函数B)这个函数所重载的运算符是一个一元运算符C)这是一个成员函数D)这个函数不改变类的任何数据成员的值(25)有如下函数模板定义:templateclassTTfunc(Tx,Ty){returnx*x+y*y;}在下列对func的调用中,错误的是A)func(3,5);B)func(3.0,5.5);C)func(3,5.5);D)funcint(3,5.5);(27)在下列函数原型中,可以作为类AA构造函数的是A)voidAA(int);B)intAA();C)AA(int)const;D)AA(int);(28)下列关于this指针的叙述中,正确的是A)任何与类相关的函数都有this指针B)类的成员函数都有this指针C)类的友元函数都有this指针D)类的非静态成员函数才有this指针(29)有如下程序:#includeiostreamusingnamespacestd;classTest{public:Test(){n+=2;}~Test(){n-=3;}staticintgetNum(){returnn;}private:staticintn;};intTest::n=1;intmain(){Test*p=newTest;deletep;coutn=Test::getNum()endl;return0;}执行后的输出结果是A)n=0B)n=lC)n=2D)n=3(30)有如下程序:#includeiostreamusingnamespacestd;classA{public:A(){coutA;}};classB{public:B(){coutB;}}classC:publicA{Bb;public:C(){coutC;}};intmain(){Cobj;return0;}执行后的输出结果是A)CBAB)BACC)ACBD)ABC(31)有如下类声明:classXA{intx;public:XA(intn){x=n;}};classXB:publicXA{inty;public:XB(inta,intb);};在构造函数XB的下列定义中,正确的是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){}(32)有如下程序:#includeiostreamusingnamespacestd;classBASE{public:~BASE(){coutBASE;}};classDERIVED:publicBASE{public:~DERIVED(){coutDERIVED;}};intmain(){DERIVEDx;return0;}执行后的输出结果是A)BASEB)DERIVEDC)BASEDERIVEDD)DERIVEDBASE(33)在表达式x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。下列叙述中正确的是A)operator+有两个参数,operator*有两个参数B)operator+有两个参数,operator*有一个参数C)operator+有一个参数,operator*有两个参数D)operator+有一个参数,operator*有一个参数(34)下面关于C++流的叙述中,正确的是A)cin是一个输入流对象B)可以用ifstream定义一个输出流对象C)执行语句序列char*y=PQMN;couty;将输出字符串PQMN的地址D)执行语句序列charx[80];cin.getline(x,80);时,若键入Happynewyear则x中的字符串是Happy(35)有如下程序:#includeiostreamusingnamespacestd;classAA{intn;public:AA(intk):n(k){}intget(){returnn;}intget()const{returnn+1;}};intmain(){AAa(5);constAAb(6);couta.get()b.get();return0;}执行后的输出结果是A)55B)57C)75D)77(6)下列函数的功能是判断字符串str是否对称,对称则返回true,否则返回false。请在横线处填上适当内容,实现该函数。boolfun(char*str){inti=0,j=0;while(str[j])___________;for(j--;ij&&str[i]==str[j];i++,j--);returni___________j;}(7)执行语句序列intx=l0,&r=x;coutx'-'rendl;输出结果为___________。(8)下列程序的输出结果为Objectid=0Objectid=l请将程序补充完整。#includeiostreamusingnamespacestd;classPoint{public:Point(intxx=0,intyy=0){X=xx;Y=yy;countP++;}~Point(){countP--;}intGetX(){returnX;}intGetY(){returnY;}staticvoidGetC(){coutObjectid=countPendl;}private:intX,Y;staticintcountP;};___________//静态数据成员的初始化intmain(){Point::GetC();PointA(4,5);A.GetC();return0;}}(9)非成员函数应声明为类的___________函数才能访问这个类的private成员。(10)派生类中的成员不能直接访问基类中的___________成员。(11)下列程序的输出结果为2,请将程序补充完整。#includeiostreamusingnamespacestd;classBase{public:___________voidfun(){cout1;}};classDerived:publicBase{public:voidfun(){cout2;}};intmain(){Base*p=newDerived;p-fun();deletep;return0;}(12)请将下列类定义补充完整。classBase{public:voidfun(){coutBase::funendl;}};classDerived:publicBase{public:voidfun(){___________//显式调用基类的fun函数coutDerived::funendl;}};一、选择题(11)C)(12)A)(13)D)(14)B)(15)C)(16)D)(17)D)(18)A)(19)C)(20)A)(21)B)(22)C)(23)B)(24)B)(25)C)(27)D)(28)D)(29)A)(30)D)(31)B)(32)D)(33)C)(34)A)(35)B)二、填空题(6)j++=(8)intPoint::countP=0;(9)友元(10)私有或private(11)virtual(12)Base::fun();6.4(11)下列关于C++函数的说明中,正确的是A)内联函数就是定义在另一个函数体内部的函数B)函数体的最后一条语句必须是return语句C)标准C++要求在调用一个函数之前,必须先声明其原型D)编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式(13)下列关于虚函数的说明中,正确的是A)从虚基类继承的函数都是虚函数B)虚函数不得是静态成员函数C)只能通过指针或引用调用虚函数D)抽象类中的成员函数都是虚函数(14)运算符重载是对已有的运算符赋予多重含义,因此A)可以对基本类型(如int类型)的数据,重新定义“+”运算符的含义B)可以改变一个已有运算符的优先级和操作数个数C)只能重载C++中已经有的运算符,不能定义新运算符D)C++中已经有的所有运算符都可以重载(15)模板对类型的参数化提供了很好的支持,因此A)类模板的主要作用是生成抽象类B)类模板实例化时,编译器将根据给出的模板实参生成一个类C
本文标题:C++练习题(附答案)
链接地址:https://www.777doc.com/doc-4347578 .html