C++练习题库.docx
C+程序设计模拟试卷(一)一、单项选择题(本大题共20小题,每小JgI分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,清将其代码填写在题后的括号内。错选、多选或未选均无分.1 .编写C+程序一般需羟过的几个步骤依次是OA.编制、调试、编译、连接B.编辑、编译、连接、运行C.娟译、调试、编辑、连接。.弟洋、编科、连接、运行答案:B解析:羟过编辑、编洋、连接和运行四个步骤.编辑是4C+源程序筠入计算机的过程,保存文件名为CPM编译是使用系统提供的编评涔将懑程序CPP生成机涔活言的过程,目标文件为Obj,由于没有得到系统分配的绝对地址,还不能直.接运行。连接是将目标文件。W游换为UJ执行程序的过程,结果为CXc,运行是执行exc,在屏幕上显示结果的过程,2 .决定C+潘吉中函数的返【可值类型的是OA.return语句中的表达式类型B.调用该函数时系统匐机产生的类型C.园用该函数时的主调用函数类型D.在定义该函数时所指定的数据类型答案;1)斛析If价数的返回值类型由定义函数时的指定的数据类型决定的。A项的衣达式的值要依换成函数的定义时的返回类型.3 .下面叙述不正确的是OA.派生类一皎都用公有派生B.对基类成员的访问必须是无二义性的C.Mtft我容规则也适用于多更维承的组合D.班类的公布成员在派生类中仍然是公有的答案:D解折:绊承方式有三种:公有、私有和保护,多维承中,多个基类具有同Z成员,在它们的子类中访问这些成员,就产生了二义性,但进行访问时,不能存在二义性.赋值兼容规则是指而生类对象可以当作基类对望使用,只要存在继承关系,所以单维承或多继承都适用.基类中的公行成员采用私有继承时,在派生类中变成了私有成m,所以D项错误.4 .所谓数据封装就是将一组数据和与这如数据有关操作组装在一起,形成一个实体,这实体也就是OA.类B,对象C.函数体D.数据块答案:A就折:类即数据和操作的组合体,数据是类的静态特征,操作是类具行的动作。5 .在公有海生类的成员南数不能宜按访问基类中继承来的某个成员,则该成员一定是基类中的()A.私有成员B.公有成员C.保护成员D.保护成员或私有成员答案:A解析;在派生类中狄类的保护或者框类公仃都可以宜接访问,象类的私有成员只能是战关的成员函数来访问.,所以选择A项,6 .对基类和派生类的关系描述中,错误的是OA.派生类是狭类的具体化B.基类继承了派生类的属性C.麻生类是基类定义的廷续D.派生类是基类的特殊化答案:B解析:派生类的成员一个是来自基类,一个来自本身.所以派生类是基类的犷展,也是基类的具体化和特殊化.派生类是对基类扩展B度基类不能继承派生类成员.所以惜误.7 .关于this指针使用说法正确的是OA,保证每个对象拥行自己的数据成员,但共享处理这些数据的代码,保证她类秣有成员在子类中可以战访问.C.保证基类保护成S在子类中可以被访问。0.保证基类公有成员在子类中可以被访问,答案:A解析;Ihic指针是唠藏的,可以使用该指针来访问调用对象中的数据”块类的成员在派生类中能否访问,与维承方式有关,与IhiS没有关系,所以选择A项,8 .所谓多态性足指OA.不同的为象谓用不I可名称的函数B.不同的对象调用相同名称的函数C. 一个对望调川不同名称的雨数D. 一个对象冏用不同名称的对象答案:B解析:多态性有两种静态多态性和动态多态性,静态多态性是指调用同名函数,由于参数的不同调用不同的同名除数:动态多余性是指不同对象调用同名函数时.由于对象不同调用不同的同名函数.多态性肯定具有相同的函数名所以选择B项.9.一个函数功能不太复杂,但要求被猱繁两用,则应把它定义为<>A.内联函数B.重载函数C.递妇函数。.嵌套函数答案:R解析:内联函数特征代码少.颇繁调用,执行效率高.重载函数解淡统一接U的何麴:递归是子程序调用,程序调用要耗费很多空间和时间,循环/迭代都比递归有效率得多,递归只是从形式上,逻辑比较简洁.嵌套函数即反复词用,速度较慢.所以选择A项.10.卜面函数模板定义中不正确的是()A.BBD.D答案:R解析:A项中F是一个退网Q类型的位,而return中用返回类型作为返,岫错误,所以选择A项。11 .假设C1.aSSY邛UbIiCX,即类Y是类X的派生类,则说明一个Y类的对皱时和删除Y类对领时.调用构造函数和析构函数的次序分别为OA. X.V:Y1XB. X.Y;X1YC. Y.X:X.YD. Y.X:Y1X答案:A解析:派生类构造函数必须对这三类成员进行初始化,其执行顶序:调用茶类构造函数;调用干对象的构造函数:源生类的构造函数体.析构函数在执行过程中也要对基类和成员对象进行操作,但它的执行过程与构造函数正好桐反.即对派生类新增普通成员进行清理:调用成员对象析构函数,对派生类新增的成员对象进行清理:调用基类析构函数.对基类进行清理.所以选择A%12 .适宜采用in1.ine定义函数僧况是OA.函数体含有循环语句B.函数体含有递归语句C.函数代码少、频繁调用。.除数代码多、不常调用答案:C解析:内联函数具有程序代码少、嫉繁调用和执行效率高的特征,所以选择C项.13 .假定,个类的构造函数为A(intaa,intbb)a=aa;b=a*bb:),则执行Ax(4,5):语句后.x.u和x.b的值分别为()A. 3和15B. 5和4C. 4和20D. 20和5答案:C解析:a=4,因为后减,b的他与a、bb相关,b=1*5=20,而与丁没有任何关系。14 .在类中说明的成员可以使用关键字的是OA. pub1.icB. externC. cpuD. register答案:R解析:extern用于声明外部变心的。register声明寄存器类型变做,无CDU类型。它们都不能声明类.成员pub1.ic声明为公有访问权限,所以选择R项。15 .下列不能作为类的成员的是O.自身类对软的指针B.自身类对象C.自身类对象的引用D.另一个类的对软答案;B解析:炎的定义,如果有自身类对象,使得循环定义,B项错误,在类中具有自身类的指针,可以实现链表的操作,当然也可以使用对象的引用.类中可以有另一个类的时象,即成员对象所以选择B选项.16 .使用地址作为实参传给形参.下列说法正确的是OA.实卷是形参的备份B.实参与形参无联系C.形参是实参的备份D.实参与形参是同一对效答案:D解析:地址作为实参,表示实参与形参代衣同一个对象.如果实参足数值.形参也是普通变Jh此时形参是实参的备份,所以选择D攻.17 .卜列程序的输出结果是()Sinc1.UdC<iostream,h>voidmain()(i11tn3-110.20,30,40,50,601;int(*p)3:I>=n:cou1.<<p00«*.*<<*(p0+1)«*.*<<(*p)2«end1.;A.10.30.50.10.20.30C.20.40.60D.10.30.60答案:H解析:如果数组元素布是相同类型的指针.则称这个数组为指竹数纵.指计数组般用于处理1维数组,声明的格式为;<数据类型><(*变此名)X元素个数>.P表示指向数组n的行指针。如果将指针的初始化(*p)34;地址的等价形式:pHPiMp+i)都表示b数组第行的第1个元素的甘地址.*(p+i)jpCi+j&PEi1.j都表示b数组第i1.行、第j+1.列元素的地址.依的等价形式:*(*(>+i)÷j)*(pi+j)pij都衣示b数祖第i+1、第j+1列元索的值.所以题目分别访问P00,p01,p02.18.在O*中使用St进行输入辎出、其中用于屏幕输入(A. cinB. cerrC. COUtD. c1.og答案:R解析;标准输入流cin:istream类的对软。标准输出流COut:OS1.rea1类的对象,(3)非缓冲型标准出播流CC】T:US1.reUm类的时象。(4)缓冲型标准出错流c1。的OS1.rCam类的对象19.假定AA为一个类,n为该类公芍的函数成员,X为该类的一个对望.则访问X对象中函数成员a的格式为SA. X.aB. x.a()C. x->aD. (*x),a()答案;B解析:对象访问成员的方式为:对象名.成员.指针可以有两种,(*对/指针).成员或者对您指豺->成员.A选项是访问数捌成员.B项是访问成员函数,20.关于对象概念的描述中,说法错误的是()A.对象就是C语言中的结构变阜B.对象代表着正在创建的系统中的一个实体C对竹是扬的一个变如D.对之间的信息传递是通过消息进行的答案:R解析:A对象在C+中才有,包括数据和操作两项,而C中的变成只有数据,没有操作.所以A项错误,二、填空题(本大题共20小题,每小题1分,共20分)话在每小题的空格中填上正确答案°错携,不填均无分。1 .Ci的流库预定义了4个流.它们是cin、cout.c1.ogf11.”答案:(P193)cerr解析cin.cout,C1.og和Cerr分别用于标准输入、输出、标准错误流(接冲和标准错误流(小缓冲)2 .每个对望都是所园类的一个.答案:实例解析类是对型的抽象.对望是类的一个实例.3 .在已经定义了整型指针ip后,为了得到一个包括10个整数的数组并由2所指向,应使用语句一。答案:intip-newi11t10:解析ne.用来动态开辟空间.常用来产生动态数组及对象构造函数.4 .函数模板中紧随IemPIate之后尖括号内的类型参数都要冠以保留字_。答案:c1.ass解析类模板的使用temp1.atec1.assT>,也可以引入多参数的如:Icmp1.aic<c1.assT1.c1.assT2c1.assTn>5 .定义类的动态对攻数组时,系统只能修自动附用该类的构造函数对其进行初始化.答案:无多解析使用now创建对数1,调用无参构造函数。6 .表达式COUt<<end1.还可表示为.答案:,n'解析CndI与字符常量'n等价,7 .在C+中.访问一个指针所指向的对象的成员所用的指向运算符是答案;->解析指针使用成员有两种方法:“>”指向运算符和”成员访问运算符.8,假如个类的名称为MyC1.aSs,使用这个类的个对象初始化谈无位力、WQR.可以调用一构造函数来完成此功能,答案:受制或拷贝红制或拷贝构造函数就是用对象初始化新的对象.9 .对赋他运兑符进行垂毂时,应声明为函数.答案;(P183)类成员解析运或符虫我的方法有友元或者成员函数两种途径,但是赋俏运算符只能使用成员函数的方法来实现.10 .如果要把A类成员函数CJBJg回值为Void声明为类B的友元函数.则为在类B的定义中的入的i?5句_.答案:(P109)friendvoidA:f();解析成员函数作为月一个类的反元函数,格式为:friend返回类型类名:函数(形卷K11 .下列程序段的给址结果是for(i=0,j=10.k=0;i<=jji*+tj-3.k=i*j):cout«k:解析for循环结构,三个表达式的作用,初始化、循环判断条件和循环变量变化,循环执行了三次,k的作用是计算i、j的和,12 .Strmg类的一方法返回查找到的字符串在主串的位巴.答案:(PtO)find解析String类对象方法的find,查不到字符小,则返回-I.13 .intn=0;whi1.e(n=1.)n+:Whi1.C循环执行次数是答案:无限次解析=是赋例运算符,不是关系运算符,且不等0,所以死循环,14 .控制格式输入输出的操作中,函数是用来设置,口充字符。要求给出的数名和卷数类型答案:Setfi1.Kchar)解析格式控制方法的使用.如Setn,Setfin等等.15 .C+语言支持的两种多态性分别是编译时的多态性和的多态性.答案:运行时解析多态性包括静态的(编译时)多态性和动态的(运行时多态性。16 .设函数SUm是由函数模板实现的.并HSUm(3.6)和SUm(4.6,8)都是正确的函数调用,则函数镇板具有个类型参数.答案:217 .执行下列代码stringstrC,He1.IoC*);cout<<str.substr(5.3):程序的箱出结果是一.答案:C+÷解析subsir取子字符申,笫1个参数表示要截取子申在字符申中的位置,第2个表示取多少个字符。18 .在面向对象的程序设计中,将一组对象的共同特件抽象出来形成一.答案:类解析/类是相似特征的对象的抽象,对蚊是类的一个实例.19 .定义类动态对象数组时,元素只能施自动调用该类的来进行初始化,答案:无参构造函数解析使用non创建动态对望数组,不能有参数,所以只能附刖无参的构造函数,初始化对象20.己知有20个元素ini类型向此1.若HHI初始化为V2向此,语句是,,答案:CCtor<int>V2(V1.);解析采用向fit初始化另一个向量的形式:YeCtOrtypennme1(name):三、改犍曲(本大SS共5小效,每小题2分,共10分)下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见.1. inc1.ude<iostrea三.h>c1.assTest(private:intx.y-20:pub1.ic:Test(inti,intj)(x=i,y=jjintgetx()returnx:)intgcty()(returny:)1:voidmain()(Test三t(10,20);cout<<t,getx()<<end1.;cou1.<<三t,ety()<<cnd1.;J答案:intx,y=20;在类内部不能对数据成员直接Itttfr修改intX,y:2. Sinc1.ude<iostrca三.h>c1.assTest(intx,y:pub1.ic:fun(inti,intj)x=iy=jjshowO(cout<<*x-*<<x:if(y)cout<<*",y=*<<y<<end1.;cout<<end1.;;voidmain()''Testa:a.fun(1.);a,showO;a.fun(2,4);a.show():1答案:inti,intj调用时,既有一个参数.也彳!"两个参数,且没有由我,所以参数沛要指默认值。所以inii,intj错误.脩改inii,in1.j=0注j只要有一个ini类型的数据就行.3. Sinc1.udeViostrcaa.h>c1.assA(inti:pub1.ic:virtua1.voidfun()=0;(inta)(i=a:!:c1.assIkpub1.icA(intj;PUb1.ic:voidfun(cout«*B:fun()n,;B(int,intn=0):A(m),j(n);voidIiiiiinO(A*pa:Bb(7);Pa=&b:答案IBaIHAimn=O):A®,j(n)()因为基类是抽国类,不能被实例化,所以在派生类中不能调用初始化基类对象,所以B(in1.m,inin=0hA(m),j(n)1错误,删去A(m).fB(intm.intn-0):j(n)04. Binc1.ude<iostrea三.h>c1.assX(pub1.ic:intx;pub1.ic:X(intx)(cout<<this->x=x<<end1.;)X(Xit)(X=1.X:cout<<t.x<<end1.:voidfun(X);:voidfun<Xt)(cout<<t,x<<end1.;Jvoidmai110(fun(X(IO)J答案;CouM<1.his->x=x<Snd1.;要输出讣is->x=N表达式的值要加拈号.修改cout<<(this->x=x)<<cnd1.:5. Rinc1.udeVios1.reaa.h>Sinc1.ude<string.h>c1.assBas(pub1.ic:Bas(char*s-0*)Istrcpy(name,s);IvoidSho1.r0:protected:charname20:Basb:voidshowO(cout«"naiM?:*«b.name<<end1.;)voidmain()'Basd2he1.1.o):show();)答案:VOidShoW():是普通函数不是成员函数,但是要访问类成员,需要定义为友元函数.修改friendvoidshow();四、完成程序题(本大题共5小题,每小观4分,共20分)1 .在下面程序横线处埴上适当字句,以使该程序执行结果为:504342110O7.18.19.110.111.1Sinc1.ude<iostream.h>temp1.ate<c1.assT>voidf()(:for(inti-0:i<112:i*)t=ai,ai=an-1.-i,an-1.-i=t;voidmain0(inta5=10,21.34t4,50;doub1.ed6=1.1.1.10.1,9.1,8.1,7.1):f(a,5);f(d,6):for(inti=0;i<5:i+)cout«ai«,":cou1.<<end1.:for(i=0ji<6J÷+)cout«di«*;cout«endI;答案:Ta,intn,Tt=0:解析不同的数据类型的调用,使用了模板,f函数增加I变境,因为实类型不同,所以I的类型应该是T类型的.2 .在下面程序的底画线处填上适当的字句,使该程序执行结果为40.Sinc1.ude<iostream,h>c1.assTest(pub1.ic:Test(inti=0)(x=i+x;1iniGctnumO(returnTest:x+7:)voidmainO(Testtest;cout<<tcst.Gotnun0<<cnd1.;:1答案:staticintx;,intTest:x=30;解析从成员函数访问方式类名:成员可知是静态成员所以S1.a1.iCintx:从结果要对初始化为30,且在类外进行初始化,intTest:x=30:.3 .在下列程序的空格处填上适当的字旬,使输出为*0,2.10.Jtinc1.ude<iostream.h>!inc1.ude<三ath.h>c1.assMagic(doub1.ex;pub1.ic:Magic(doub1.ed三0.00):x(fabs(d)0Magicoperator÷()(returnMaxic(sqrt(x*x÷c.x*cx);)operator<<(ostreamhstream.Magic&c)(stream<<c.x;returnStrCaIt:);voidmain()(Magicma;cout<<Ba<<*,*<<Magic(2)<<*,*<<ma÷Magic(-6)+Magic(-8><<end1.:)答案:operator*(Magic&c),friendOStrOaB4。Porator解析对加法进行盅机operator+(Magic&c),是对插入符进行或我,要访问成员所以定义为友元函数,friendOS1.reaB&operator4 .下面是一个输入半径,输出其面积和周长的C+程序,在下划找处埴上正确的语句。inc1.ude<iostream>voidmain()(doub1.erad;COU1.<<"rad="cin>>rad;doub1.e1-2.0*pi*rad:doub1.es=pi*rad*rad;cout<<*nThe1.ongi$;*<<1.<<end1.:cout<<*Thcareais:<<<s<<cnd1.:)答案SUSinKnamespaceSI&'definepi3.11159解析进行ft入或输出要引入ios1.rod叫所以USingnonespacestd;从标点看没有分号所以使用宏定义,definepi3.11159.5 .程序实现大写字母转换成小写字母,Jiinc1.udc<iostrca11.h>voidmain()(chara;cin>>a;if()a三a÷i;cout<<a<<end1.;答案:inti=32:,a>=A&&a<=Z解析大写字母变小写字母相荽32,箭要对i声明并初始化,大写字母变小写字母。要判断字符是大写字母.五、程序分析述(本大Sfi共4小题,每小S5分,共20分)1 .给出下面程序输出结果.itinc1.ude<iOStrcam.h>c1.assa(pub1.ic:virtua1.voidprint()(cout<<*aprog.*«end1.;J:;c1.assb:pub1.ica0:c1.assc:pub1.icb(pub1.ic:voidprint()1.cout<<*cprog.*<<end1.;voidshow(a*)(p).print0;voidmain()show(4a);showb):show(ftc);答案:aprog.aprog.cprog.解析考查多态性的a类对象圜用本身的虚耳数Pb类因为没有粮写Print,所以仍然调用基类的虚函数.而C类近新定义Prin1.虚函数,所以调用C类的Prir2 .给出下面程序输出结果Cinc1.ude<aath.h>inc1.ude<iostream.h>Jtinc1.ude<io三anip.h>x>o1.fundonen);void11ain()(1.onga=10,b-30.1-0:if(a%2-0)a;for(1.ongm=a;m<=b;m+=2)if(fun(m)(if(+%10=0)cou1.<<cnd1.;cout<<setv(5)<<m:boo1.fun(1.ongn),ir1.sqr1.n=(ini)sqrt(n);for(inti-2;i<=sqrtm;i*)if(n%i=0)returnfa1.se;returntrue:答案:111317192329解析循环体用来判断n是否足防数的函数.在I1.aIn函数判断10-30之间质数.3.给出下面程序输出结果,#inc1.ude<iostroan.h>c1.assTest(intxy:pub1.ic:Test(inti,intj=0)(x=i:y=j;1.intget(intieintj)(return);voidmainO(Testt1.(2),t2(1.6):int(Test:*p)(int,int=10);p-Test:get;cout<<(t1.tp)(5)<<end1.;Test*p1.=ftt2;cout<<(p1.->*p)(7.20)<<end1.;1答案,1527解析指向类成员函数的指针的使用,丁指向TeSt类中有两个参数的区数的个指针.P=Test:get.这样P就和发生了联系(I1.*p)(5)等价于调用一个参数的get函数.4.0inc1.ude<iostrea.h>itinc1.ude<string.1.>inc1.ude<on<nip.h>c1.assstudent(charnae8:intdeg:char1.eve1.7;friendc1.assprocess:/说明友元类pub1.ic:student(charna,intd)(strcpy(name,na):deg=d;1:c1.assprocess(pub1.ic:voidtrans(student&s)(inti=s.deg/10:switch(i)(case9:strcpy(s.1.eve1.,“优”):break;case8:strcy(s.1.eve1.,*1.*);break;case7:strcpy(s.1.eve1."中"):break;case6:StTCPy(S1.eve1.,"及格”);break:defau1.t:StrCPy(S1CVC1,"不及格;1 voidshov(student&s)(cot<<set<(10X<s.naBe<<seU(4)<<s.deg<<setw(8)<<s.1.eve1.<<end1.;I);voidmain()(studentst=(StUdent("张三,78).StA1.dent("李四".92),StUdent(“王五M62),StUdente1孙六",88);processp;cout<<*,果:""姓名"sc"(6)<<"成翔T<<se1.w(8)等级"<<end1.;for(inti=0:i4;i,+)1.'p.trans(sti);p.ShoW(Sti);)答案:结果:姓名成绩等级张三78中李四92优王五62及格独六8S良六、程序设计题(本大能共1小题,共10分)1.已定义一个ShaPe抽象类,在此基础上派生出矩形ReCtang1.e和H1.形CirC1.e类.二者都有GetPerimO函数计算对望的周长,并编写测试BainO函数.c1.assShape(pub1.ic:ShapeOD'Shape()virtua1.f1.oatGetPeriaO=O;答案:c1.assRectang1.ezpiib1.icShape(pub1.ic:Rectan1.o(f1.oati,f1.oatj):1.(i>,W(J)('Rectang1.eO()f1.oatCetPerimOreturn2*(I.+W);)private:f1.oat1.»I;.c1.assCirc1.erpub1.icShape!pub1.ic:Circ1.e(f1.oatr):R(r)f1.oatGetPerimO(return3.11*2*R;private:f1.oatR;I:voidmain()(Shape*sp;jjp=ne*Circ1.e(IO):CoU1«SP-Xie1.Peri1.n0<<cnd1.:sp-newRectang1.e(6,4);cout<<sp-XJetPeri三()<<endi;_C+程序设计犊拟试卷(二)一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,清将其代码埴写在题后的括号内。错选、多选或未选均无分.1.静态成员函数没有OA.返回值B.this指针C.指针参数D.返回类型答案:B解析:静态成员函数是普通的睨数而加入StatiC,它具有函数的所有的特征:返IE类型、形参,所以使用(PIO力静态成员函数,指针可以作为形参.也具有返回值.峰态成员是类具有的演性,不是对象的特征,而this友示的是隐藏的对象的指针,因此铮态成员曲数没有this指针.峥态成城函数'与在类外定义时,要注意不能使用Sta1.iC关键字作为前缀。由于龄态成员函数在类中只有一个拷贝(副本,因此它访问对象的成员时要受到一些限制:泠态成员函数UJ以点接访问类中说明的静态成员.但不能直接访问类中说明的非静态成员:若要访问非前态成员时必须通过参数传递的方式得到相应的对象.再通过对象来访问.2.钱定AB为一个类,则执行ABa(2),b3,*p(4:"语句时词用该类构造函数的次数为()A. 3B. 4C. 5D. 9答案:B解析:n(2)调用1次桁参数的构造函数,b3诩用3次无参数的构造函数.指针没有给它分配空间,没仃询用构造函数.所以共调用构造函数的次数为4.3.有关多态性说法不正焉的是OA. O谙言的多态性分为编洋时的多态性和运行时的多态性S.编译时的多态性可通过函数亚教实现C.运行时的多态性可通过模板和虚函数实现D.实现运行时多态性的机制称为动态多态性答案:C解析:多态性分为群态的和动态的.环态通过函数的弟教来实现动态是迪过基类指针或范类引用和虚函数来实现的。所以错误的是C项。4.限定一个类的何造函数为“A(in1.i=4,intj=0)a=i:b=j;)”,则执行“AX;”语句后,x.a和x.b的值分别为OA.HuoB. 1和4C. 4和00.4和I答案:A解析:带公法的构造函数,对应实参没有ff1时就采用形多依,调用构造函数时,i=1.,不来用!K认值,而只有一个参数,j来用钛认位0即j=0,因此a=1.,b=0,选择A项。5 .类MyA的药贝初始化构造函数是OA. MyAOB. MyA(MyA*)C. MyA(MyAft)D. MyA(MyA)答案:C解析:攵制即拷贝构造函数使用对象的引用作形参.防止临时产生一个对望.A无参构造函数,B是指针作为形卷,1)项是对象,所以选择C项。6 .在C+中,南数原型不能标识OA.函数的返回类型B.函数参数的个数C.函数参数类鞭D.函数的功能答案:I)解析:函数的声明,说明函数的参数、返回类型以及函数名,函数体即实现部分决定功能,所以函数的原型不能决定函数的功能。7 .友无关系不能OK.提高程序的运行效率8 .是类与类的关系C.是一个类的成员班数与另一个类的关系D.继承答案:1).解析:友元可以是函数与类的关系即反元函数,也可以类与类的关系即友元类,但友元不能继承,是单向性,且不具有传递性。友元可以访问类中所有成力,提高了访问的方便性,因此选择D斑8 .实现两个相同类里数加法的函数模板的声明是(A. add(Tx,Ty)B. Tadd(x,y)C. Tadd(TX,y)D. Tadd(Tx,Ty)答案:D解析:实现两个相同类型数加法结果应该和操作数具有相同类鞭。进行加法运算后结果也是和参数具有相同类型.需要返IEtt1.A无返回值时要用void.B形参无类型C形参y没有类型,所以选择D项.9 .在inia=3,int*p=&a:中,*p的值是()A,变量a的地址值B.无意义C.变质P的地址位D.3答案:D解析:*P代表引用a变量的值.p代表a的地址值.所以选择D限.10.下列不是描述类的成员函数的是(>A.构造函数8.析构函数C.友元函数D.拷贝构造函数答案:C解析:构造的数、析构函数、拦贝构造函数都是特殊的成员函数.友元则不是成员的数.所以选择CJ短11.如果从原有类定义新类可以实现的是OA.信息除能S.数据封装C.继承机制D.数据抽象答案:C解析:维承指在原有类的基础上产生新类,数据封装即数据和操作组合在起.形成类.伯恩的附藏,通过访问权限来实现.数据抽象,将事物的特征抽奴为数据成员或服务.囚此选择C项。12 .下面有关类说法不正确的是()A. 一个类可以有多个构造函数B. 一个类只有一个析构函数C.析构函数需要指定参数D.在一个类中可以说明具有类类型的数据成员答案:C解析;构造函数可以有参数、可以正我、因此可以行多个,A项正确,析构函数只有个不能重载,不能绰承,没有返回值,B项正确,C项错误。13 .在函数定义中的形参屈于OA.全同变IftB.局部变量c.静态变IftD.寄存器变fit答案:B解折:形参或函数中定义的变状都是局部变酸,在函数外定义的变状是全局变量.形参只能用冏部变;上频繁使用的变I*可以声明为寄存器变量,形卷不能使用样态变M或寄存器变希,14.下列有关曳致函数的说法中正确的是OA.求我函数必期具有不同的返回伯类型8.求载函数参数个数必须相同C.重载函数必纪行不同的形参列表。.由我函数名可以不同答案:C解析:函数的用我必须函数名相同而形冬类型或个数不同,与返回值无关。15 .this指针存在的目的是OA.保证基类私有成必在f类中可以被访问B,保证基类保护成员在子类中可以被访问C.保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码D.保证基类公有成讪在,类中可以被访问答案;C解析:C+要求函数在被调用之前,应当让编译器知道该函数的原型,以便渝译据利用函数原型提供的信息去检查调用的合法性,强制参数转换成为适当类里.保证参数的正确传递.对于标准库函数,其声明在头文件中.可以用inc1.ude宏命令包含这些原吧文件:对于用户自定义函数,先定义、后蠲用的函数可以不用声明,但后定义、先附用的函数必须声明.一般为增加程序的可理解性,常将主函数放在程序开头,这样需要在主函数前对其所调用的函数一一遂行声明,以消除函数所在位置的影响。所以选择C项。16 .关于new运算符的下列描述中.错误的是OA.它可以用来动态创建对象和对象数组B,使用它创建的对坡或对象数殂可以使用运修符de1ete删除C使用它创建对象时要调用构造函数。.使用它创建时段数组时必须指定初始位答案:I)解析:ne创建的时象数组不能指定初始值,所以调用无舂的构造函数,选拓)项.17 .已知:P是一个指向类A数据成员m的指针,A1.是类A的个对象,如果要给m赋值为5,正确的是OA.1.p=5;3.A1