《C++习题与答案.docx》由会员分享,可在线阅读,更多相关《C++习题与答案.docx(16页珍藏版)》请在课桌文档上搜索。
1、一、选择:1、关于对象概念的描述中,()是错误的。A.对象就是C语言中的结构变量:B.对象代表若正在创建的类的一个实体:C.对象是个属性和操作(或方法)的封装体;D.对象之间的信息传递是通过消息进行的:2、卜列给字符数组进行初始化中,O是正确的。A. chars1.=,12345abcd:B.chars23=*xyz*:C.chars33三,a,x,y,;D.chars423=*xyz*,*mnp*!:3、对于int*pa5;的描述,()是正确的。MPa是一个指向数组的指针,所指向的数组是5个int型元素:B. Pa是一个指向某个数组中第5个元素的指针,该元素是ini型变量:C. pa5表示某
2、个数组的第5个元素的值:D. Pa是一个具有5个元素的指针数组,每个元素是一个int型指针:4、在intb3=1.,3,2),(4,5,6,0b22的值是()A.0:B.2:C.5:D.65、下列的各类函数中,()不是类的成员函数。A.构造函数;B.析构函数;C.友元函数;D.拷贝初始化构造函数;6、下述静态数据成员的特征中,)是错误的。A.说明静态数据成员时前边要加修饰符static;B.静态数据成员要在类体外进行初始化:C.引用静态数据成员时,要在静态数据成员名前加K类名和作用域运算符;D.铮态数据成员不是所有对象所共用的。7、()是析构函数的特征。A.一个类中只能定义一个析构函数;B.析
3、构函数与类名不同;C.析构函数的定义只能在类体内;D.析构函数可以有各个或多个参数。;8、已知:P是一个指向类A数据成员m的指针,A1.是类A的一个对象.如果要给In赋值为5,()是正确的。B.1.-p=5;D.*A1.p=5;A.1.p=5;C.1.*p=5;9、关于new运算符的下列描述中,()是错的。A.它可以用来动态创建对象和对象数组:B.使用它创建的对象或对象数组可以使用运兑符de1.ete删除:C.使用它创建对象时要调用构造函数:D.使用它创建对彖数组时必须指定初始值。10、派生类的对象对它的基类成员中()是可以访问的.A.公有继承的公有成员;B.公有继承的私仃成员:C.公有继承的
4、保护成员:D.私有继承的公有成员。二、填空题1、,入正整数num,按从小到大的次序输出所有的因子.inc1.udeWefineN40voidmain()(intnum,t,i,j.k,aN;coutnum;i=2:k=N-I;a0=1.J=0;aN-1.=numt=num:whi1.e(it)(if)t=num,i;a+j=i:if(it).;)for(i=0:i=j;i+)coutai,t:for(i-k;iN;i+)coutai,t:cout,n;)2、用1、2、3、4四个数组成四位数,箱出所有可能组成的四位数,并统计四位数的个数ftinc1.udovoidmin()inta,b,c1d,
5、sum=0,x:for(a=1.;)for(b-1.;)for(c=1.;)for(d=1.:;)x=u*+b*+c*10+d;cout,*x:SUm=+1;CoU1.Xnsuin=data=p2-count+;p1-next=.:de1.etep2:e1.se();)4、#inc1.udec1.asstest!private:intnum;f1.oatf1.;pub1.ic:testO;test(,):inige1.iniO(returnnum;f1.oatgetf1.oat()returnf1.;;test.:test()CoUt”默认初始化end1.;.=0:=0.0:test.:tes
6、t(n.f)COU初始化end1.;=11:=f:voidnain()testa;testb(2,5.5);三、读程序题,1、Pinc1.udeintfunc(int,int):voidmin()(externintx,y;coutfunc(x,y)ond1.:结果intx=15,y=-5:intfunc(inta,intb)(ints;s=a+b+x+y;returns:2.#inc1.udeintadd(intx=15,inty=10)结果:returnx+y:)voidmain()(inta=8:cou1.add(),t,;coutadd(八),t;coutadd(a,add(八)),t
7、;coutadd(a,add(a,add()n,:3、Uinc1.udevoidmain()(inta8=(10,20,30,40,50,60,70,80;结果:int*pi:pi=a0:pi+;cout*pi=,*pin;pi=at;cout*pi+=*;Pi=M0:;cout*(pi+)=*(pi+),n,;pi=a0;CoUt*+pi=*+pin,:pi=Aa0;cout*(*pi)+=*(*pi)+:pi=fta0j;cout*+*pi=*+*pi,n:)4、Uinc1.udeintnumber1;intfcset1.()returnnumber1;结果:intfcset2()stat
8、icintnumber2;returnnumber2;intAmax(int&m,ini&n)return(mn?m:n):!voidmain()set1()=5;coutset1.(),t,number1.,n;number1=7;coutset1.(),t,number1.,n,;set2()=6;inta=set2();coutan;intb=3,c=4;coutmax(b,c),n,;11ux(b,c)=2;coutb=*b,tc=*c*tmax(b,c)=*max(b,c),11,:max(b,c)=10;cout*b=*b*tc=*c*tmax(b,c)=*max(b,c),n,;
9、5、#inc1.udec1.assAprivate:inti;pub1.ic:A(inta)(i=a;couti=YiY”调用了构造函数八n”;、A()(CoUti=i调用了析构函数;;Aa(O);结果一voidmain()(Aa1.(10):Aa2=20:a2=50:COUtmain()函数结束!c1.assA(intx;staticinty;pub1.ic:A(intx1.,intx2)x=x1;y=y+x2;)staticvoidshow1.O:staticvoidshow2(Aa):HvoidA:show1.()cout*Y=,yend1.;voidA:show2(Aa)coutX*a
10、.x*t*Y*yend1.;intA:y=6;结果:voidmain()Aa1.(1.1.,22):a1.show1.():show2(a1.);Aa2(33,44):A:show1.();a2.show2(a2);)7、inc1.udec1.assAApub1.ic:(inti,intj)A=i;B=j:cout”Constrctorn*;)AA(AA&obj)Aobj.A+1.:B=obj.B2:cout*CopyConstructorn*;()cout*Des1.ruc1.orn*;)voidprint()cout*A=*A*,B=*BprintO;de1.etepa;8、#inc1.u
11、dec1.assCBase(pub1.ic:virtua1.voidf1.()cout调用函数CBase*tf1.O!*end1.;)virtua1.void2()cout调用函数CBase:f2()!end1.;voidf3()coui调用函数CBaSe:f3O!end1.;):c1.assCDerivedipub1.icCBasevoidf1.Ocout调用函数CDeriVed:f1O!end1.;)void3()cout调用函数CDeriVed:用0!*f1.();P-f20:P-f30:P=obj2:P-f1.();P-f20:I,-f3();四、编程JR1、定义一个学生的类:数据成员
12、包括:姓名、学号、英语、数学、计算机三门成绩。成员函数包括:设置姓名、学号和三门课的成绩、输出数据、以及求平均成绩。2、编写一个函数,将参数P中元素做例次序。函数原型:f1.oatirror(f1.oatp.intn);其中:*mirror:返回类型为指针的函数f1.oat*p:为指针数组一、填空题1、在字长为32位的机器中,sizof(char)=字节,SiZeof(UnSignedint)=_1字节.2、C+语法规定,任何变员在使用前必须先dingyi:变量有两个值,个是变量本身的值,另一个是变母的dizhizhi。3、C+中任何一个数组的名字是个ChangIiang指针,该指针的值是该数
13、组ShoUyuHnShU的地址。4、函数调用时的参数传递主要分为单向传递和ShUangXiang传递,前者的特点是bugaibu5、函数IR载时要求同名函数的参数或不同,否则无法确定是哪个函数。6、静态数据成员是类的所仃对象中gontxiang的成员,静态数据成员初始化与般数据成员初始化bu1.on*二、判断题I、在说明语句inta(15),Ab=a,*p=M;中,b的值的*P的是相等的.()2、在不同类型操作数组成的表达式中,其表达式的类型一定是最高类型doub1.e型。()3、break语句也可以用于if体内,它可退出if语句。()4、在一个被调用函数中,一个return语句可返回多个值给
14、调用函数.voidIiuiinOinta,b,c,d=5;c=2,c+=10;结果:a=b=10;a*=2:b/=2:c%=2:CoUIa,b,”cend1.;)2、Jrinc1.udovoidmainOinta=50,b=0:结果:b-+a;cou1.a,bend1.;b三a+;cou1.aw,*be11d1.:)3、inc1.udevoidmainOintf=2002,x;if(f!=3)结果:x=2003;e1.sex=20:coutf*,*xend1.;)4、inc1.udevoiduin()(inti=1.,sum=0:结果:whi1.e(i=1.)sura+=+i;cout*sum
15、-sum,i=iend1.;5、inc1.udevoidmain()inti;for(i=4;i=10;i+)(if(i%3=0)continue;结果:couti;6、inc1.udevoidmain()charf1.ag=c,;switch(f1.ag)case,zcou1.*1.*,end1.;caseb,:COUt2end1.;break;结果:casec,:cout*3*,end1.:defau1.t:cout*4end1.:break:7、Jtinc1.udevoidmain()(staticintb3=1,2,3,4,5,6;b02=12,b1.2=18;cout*b*t*(b+
16、I)*t*b+1.*t*(b+1.)+2)*n*;coutb02+b1.2+b22ond1.:结果:)8、inc1.udevoidSwap(int&a,int&b);voidmainO(intx=10,y=7;cout*x=*xyend1.;Swap(x,y);CoUtx=xy=yend1.;结果:)voidSwap(int&a,int&b)inttemp;temp=a;a=b;b=te三p;9、*inc1.udeintadd(inta,intb):voidmain()(externintx,y:coutadd(x,y)end1:x=y:coutadd(x,y)end1;结果:)intx=50
17、,y=100:intadd(inta,intb)(ints=a+b;returns;)10、0inc1.udec1.assA(pub1.ic:AO:A(inti,intj);A()cou1.Dons1.ruc1.or.n”;)voidprintO;private:inta,b:)::A()a=b=10:cout*Defau1.tconstructor.n*;结果:A:A(inti,intj)a=i,b=j:cout*Construetor.n*;voidA:print()(cout*a=*a*,b=*bend1.;voidmain()(11,n(15,18):in.printO;n.print
18、();四、编程题从键盘上输入数组si23的各元素,并将数组S1.转置后存入数组s2中,圾后输出数组S1.和数组s2的各元素。一、选择题s1234S678910AADDCDACDA二、填空Je1、输入正整数num,按从小到的次序输出所仃的因子。if(mai=0)i(i1.)a=t;iH;2、用I、2、3、4四个数组成四位数,辘出所有可能组成的四位数,并统计四位数的个数。for(a-1.;a4;a)for(b=1.:b4;b+_)for(c=1.:c4;c)for(d=1;dnet!(p2=p1.-next;P1.-nexi-p2-next;c1sc(p1.=p1.-next):)4、test(i
19、nt,f1.oat);test.:test()mao.f1.=O.O;test.test(intn.f1.oatf)COUt”初始化*end1.;runn;fpf;三、读程序题1 .结果:202 .结果:251826413 .结果:pi=20*pi+=10*(pi+)=10*+pi=20(*pi)+=10+*pi=124、结果:557764b=3c=2max(b,c)=3b=10c=2max(b,c)=105、结果:i-o调用r构造函数i=10调用了构造函数i=20调用了构造函数i=50调用了构造函数i=50调用了析构函数mai11()函数结束i=20调用了析构函数i-10调用/析构函数i=0
20、调用了析构函数6、结果:Y=28X=HY=28Y=72X=33Y=727、结果:ConstructorCopy.ConstructorA=3B=5ConstructorA=5,B=6Dcs1.ructorDeSUUC1.orDcsWuctor8、结果:调用函数CBaSe:f1.O!调用函数CBaSe:f20!调用函数CBaSe:f30!调用函数CDeriVed:f1.()!调用函数CBase:f20!调用函数CBase:f30!一、填空题(3)定义(1)(4)地址值(5)常量(6)首元素(7)双向(8)形参的改变不影响实参(9)个数(10)类型(11)共享(12)不同二、判断题1、J2、X3、
21、X4、5、X6、X7、J8、J三、写出程序的运行结果1.结果:20.5.02、结果:51.5152.513、结果:2002,20034、结果:sum=65.i=1.1.5、结果:4578106、结果:347,结果:I42188、结果:x=IO.y=730x=7,y=010、结果::Defau1.tconstructorConstructor9,结果:150a=IO.b=IO10()a=15.b=1.8DestructorDestrucior四、编程题#inc1.udcvoidmain()ints1.|2H3|.s2pH2|.i.j;1.orti=0;i2;i+)fot(j=0;j3;j+)couts1.ijs1.i)j;s2U(i=s1.(iJUJ;)cout-A11ays1.:cnd1.;for(i=0;i2;i+)for(j=0:j3:j+)coutsHiJ(j*t*;comcnd1.;Icou1.,A11uys2:,end1.:1.brti=O;iU2j)cou1.s2(i)(j)MtM;coutcnd1.: