新标准C++程序设计教材答案-郭炜

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

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

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

资源描述

《新标准C++程序设计》习题解答第11章-第20章郭炜第十一章习题1.结构化程序设计有什么不足?面向对象的程序设计如何改进这些不足?2.以下说法正确的是:A)每个对象内部都有成员函数的实现代码B)一个类的私有成员函数内部不能访问本类的私有成员变量C)类的成员函数之间可以互相调用D)编写一个类时,至少要写一个成员函数#C3.以下对类A的定义,哪个是正确的?A)classA{private:intv;public:voidFunc(){}}B)classA{intv;A*next;voidFunc(){}};C)classA{intv;public:voidFunc();};A::voidFunc(){}D)classA{intv;public:Anext;voidFunc(){}};#B4.假设有以下类A:classA{public:intfunc(inta){returna*a;}};以下程序片段,哪个是不正确的?A)Aa;a.func(5);B)A*p=newA;p-func(5);C)Aa;A&r=a;r.func(5);D)Aa,b;if(a!=b)a.func(5);#D5.以下程序,哪个是不正确的?A)intmain(){classA{intv;};Aa;a.v=3;return0;}B)intmain(){classA{public:intv;A*p;};Aa;a.p=&a;return0;}C)intmain(){classA{public:intv;};A*p=newA;p-v=4;deletep;return0;}D)intmain(){classA{public:intv;A*p;};Aa;a.p=newA;deletea.p;return0;}#A6.实现一个学生信息处理程序。输入:姓名,年龄,学号(整数),第一学年平均成绩,第二学年平均成绩,第三学年平均成绩,第四学年平均成绩。输出:姓名,年龄,学号,四年平均成绩。例如:输入:Tom,18,7817,80,80,90,70输出:Tom,18,7817,80要求实现一个代表学生的类,并且所有成员变量都应该是私有的。#includeiostream#includecstdio#includecstring#includecstdlibusingnamespacestd;classCStudent{private:intage;intid;charname[20];intaverageScore[4];public:intaverage(){intsum=0;for(inti=0;i4;++i)sum+=averageScore[i];returnsum/4;}voidprintInfo(){printf(%s,%d,%d,%d,name,age,id,average());}voidreadInfo(){charbuf[110];cin.getline(buf,100);char*p=strchr(buf,',');p[0]=0;strcpy(name,buf);sscanf(p+1,%d,%d,%d,%d,%d,%d,&id,&age,averageScore,averageScore+1,averageScore+2,averageScore+3);}};intmain(){CStudents;s.readInfo();s.printInfo();return0;}第十二章习题1.以下说法中正确的是:A)一个类一定会有无参构造函数B)构造函数的返回值类型是voidC)一个类只能定义一个析构函数,但可以定义多个构造函数D)一个类只能定义一个构造函数,但可以定义多个析构函数#C2.对于通过new运算符生成的对象A)在程序结束时自动析构B)执行delete操作时才能析构C)在包含该new语句的函数返回时自动析构D)在执行delete操作时会析构,如果没有执行delete操作,则在程序结束时自动析构#B3.如果某函数的返回值是个对象,则该函数被调用时,返回的对象A)是通过复制构造函数初始化的B)是通过无参数的构造函数初始化的C)用哪个构造函数初始化取决于函数中return语句是怎么写的D)不需要初始化#A4.以下说法正确的是:A)在静态成员函数中可以调用同类的其他任何成员函数B)const成员函数不能作用于非const对象C)在静态成员函数中不能使用this指针D)静态成员变量每个对象有各自的一份#C5.以下关于this指针的说法中不正确的是:A)const成员函数内部不可以使用this指针B)成员函数内的this指针,指向成员函数所作用的对象。C)在构造函数内部可以使用this指针D)在析构函数内部可以使用this指针#A6.请写出下面程序的输出结果:classCSample{intx;public:CSample(){coutC1endl;}CSample(intn){x=n;coutC2,x=nendl;}};intmain(){CSamplearray1[2];CSamplearray2[2]={6,8};CSamplearray3[2]={12};CSample*array4=newCSample[3];return0;}/*C1C1C2,x=6C2,x=8C2,x=12C1C1C1C1*/7.请写出下面程序的运行结果:#includeiostreamusingnamespacestd;classSample{public:intv;Sample(){};Sample(intn):v(n){};Sample(constSample&x){v=2+x.v;}};SamplePrintAndDouble(Sampleo){couto.v;o.v=2*o.v;returno;}intmain(){Samplea(5);Sampleb=a;Samplec=PrintAndDouble(b);coutendl;coutc.vendl;Sampled;d=a;coutd.v;}/*922(20也算对)5*/8.下面程序输出的结果是4,6请填空:classA{intval;public:A(intn){val=n;}intGetVal(){returnval;}};classB:publicA{private:intval;public:B(intn):______________{}intGetVal(){returnval;}};intmain(){Bb1(2);coutb1.GetVal(),b1.A::GetVal()endl;return0;}/*val(2*n),A(3*n)*/9.下面程序输出结果是:05请填空:classA{public:intval;A(_________________){val=n;};________________GetObj(){return_________________;}};intmain(){Aa;couta.valendl;a.GetObj()=5;couta.valendl;return0;}/*intn=0int&val或:intn=0A&*this*/10.下面程序的输出是:10请补足Sample类的成员函数。不能增加成员变量。#includeiostreamusingnamespacestd;classSample{public:intv;Sample(intn):v(n){};};intmain(){Samplea(5);Sampleb=a;coutb.v;return0;}/*Sample(Sample&a):v(2*a.v){}*/11.下面程序的输出结果是:5,55,5请填空#includeiostreamusingnamespacestd;classBase{public:intk;Base(intn):k(n){}};classBig{public:intv;Baseb;Big________________{}Big________________{}};intmain(){Biga1(5);Biga2=a1;couta1.v,a1.b.kendl;couta2.v,a2.b.kendl;return0;}/*(intn):v(n),b(n)(Big&x):v(x.v),b(x.v)*/12.完成附录“魔兽世界大作业”里提到的第一阶段作业。//byGuoWei#includeiostream#includecstdio#includecstringusingnamespacestd;#defineWARRIOR_NUM5/*char*CWarrior::Names[WARRIOR_NUM]={dragon,ninja,iceman,lion,wolf};红方司令部按照iceman、lion、wolf、ninja、dragon的顺序制造武士。蓝方司令部按照lion、dragon、ninja、iceman、wolf的顺序制造武士。*/classCHeadquarter;classCWarrior{private:CHeadquarter*pHeadquarter;intnKindNo;//武士的种类编号0dragon1ninja2iceman3lion4wolfintnNo;public:staticchar*Names[WARRIOR_NUM];staticintInitialLifeValue[WARRIOR_NUM];CWarrior(CHeadquarter*p,intnNo_,intnKindNo_);voidPrintResult(intnTime);};classCHeadquarter{private:intnTotalLifeValue;boolbStopped;intnTotalWarriorNum;intnColor;intnCurMakingSeqIdx;//当前要制造的武士是制造序列中的第几个intanWarriorNum[WARRIOR_NUM];//存放每种武士的数量CWarrior*pWarriors[1000];public:friendclassCWarrior;staticintMakingSeq[2][WARRIOR_NUM];//武士的制作顺序序列voidInit(intnColor_,intlv);~CHeadquarter();intProduce(intnTime);voidGetColor(char*szColor);};CWarrior::CWarrior(CHeadquarter*p,intnNo_,intnKindNo_){nNo=nNo_;nKindNo=nKindNo_;pHeadquarter=p;}voidCWarrior::PrintResult(intnTime){charszColor[20];pHeadquarter-GetColor(szColor);printf(%03d%s%s%dbornwithstrength%d,%d%sin%sheadquarter\n,nTime,szColor,Names[nKindNo],nNo,InitialLifeValue[nKindNo],pHeadquarter-anWarriorNum[nKindNo],Names[nKindNo],szColor);}voidCHeadquarter::Init(intnColor_,intlv){nColor=nColor_;nTotalLifeValue=lv;nTotalWarriorNum=0;bStopped=false;nCurMakingSeqIdx=0;for(inti=0;iWARRIOR_NUM;i++)anWarriorNum[i]=0;}CH

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

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

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

×
保存成功