还剩18页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
简答题
1、传统的结构化程序设计的优点和缺陷是什么?优点
(1)这种程序设计方法力求算法描述准确
(2)对每一子过程模块容易进行程序对的性证明缺陷
(1)这种程序设计方法本质上是面向“过程”的,而“过程”和“操作”又是不稔定和多变的,因此不能直接反映人类求解问题的思绪
(2)程序代码可重用性差程序中除少数标准库函数外,每设计•个程序时,程序员几乎从零做起即使重用代码,通常也是通过拷贝或编辑重新生成一份
(3)维护程序的一致性困难该种方法将数据与对数据进行解决的程序代码分离
2、什么是对象?每个对象都具有属性(Attribute)和方法(Methd)这两方面的特性对象的属性描述了对象的状态和特性,对象的方法说明了对象的行为和功能,并且对象的属性值只应由这个对象的方法来读取和修改,两者结合在一起就构成了对象的完整描述
3、什么是消息?在面向对象的程序设计中由于对象描述了客观实体,它们之间的联系通过对象间的联系来反映当•个对象需要此外一个对象提供服务时,它向对方发出•个服务请求,而收到请求的对象会响应这个请求并完毕指定的服务这种向对象发出的服务请求就称为消息
4、什么是多态性?所谓多态性是指当程序中的其他部分发出同样的消息时,按照接受消息对象的不同可以自动执行类中相应的方法其好处是,用户不必知道某个对象所属的类就可以执行多态行为从而为程序设计带来更大方便
5、什么是面向对象的程序设计方法?这种方法将设计目的从模拟现实世界的行为转向了模拟现实世界中存在的对象及其各自的行为{b2=va12;cout«base2is;classD publieBlpublicB2{protected intd;publie:Dintval1intva12intval3;};D:Dintvailintva12»intva13:B1va11B2val2{d=val3;cout«derivedclassiscalied”;}voidmain{Ddobjl23;}
3.#includewindows.h#inc1udeiostream.hclassmarried{private intnumber;char*namepub1ic:staticintglobvoidset_meschar*a;voidmarried::set_meschar*acharfstrlena+1];strcpynamea;number=+4-globcout«编号:vVnumber«endl;intmarriedgIob=0;voidmain{marriedperson”00];inti gcharstr
[8]coutend1;fori=0;i3;i++g{cout«输入姓名cin»sperson[i].set_messtr;cout«end1;假定输入zhang/wangZ1i/请写出程序的结果#includeiostreamhtempiatcc1assTintIclassABCprivate:Tarray[I];public voidsetintx{inti;fori=0;iI;i++array[i]=x+i;voidget{cout\n数组元素总数为:VvI«end1;coul«array[«I-1«]=array[I-1]«endl;1;voidmain{ABCint50abcl;abc
1.set0;abcl.get;ABCint1Kabc2;abc
2.set10;abc
2.get;}程序运营结果
5.#includeiostream.hclassStudent{public:Student{cout«*constructstudent.\n;semeshours=l;gpa=
3.5;protected:intsemeshours;f1oatgPa;;classTeacher{pub1ic:Teacher{coutconstruetTeacher.Vn;;classTourpair{public:Tourpair{coutvv“constructtourpair.\n;nomeeting=;}protected:Studentstudent;Teacherteacher;intnomeeting;;voidmain{Tourpairtp;coutVbackinmain.\n”;}classMyclass{private:intx;iniy;publie:Myc1assintaintb{x=a;y=b;voidprint;voidmyfunc;};voidMyc1ass::print{coutx=*x«y=«y«endI;}voidMyclass::myfunc{intx=9y=10;cout«nInmyfunc:x=n«x*y=y«end1coutMyc1assx=VMyclass::x«Myclass:y=uMyc1ass::y«end1;voidmain{Myclasstest100200;test.print;//通过对象名访问公有成员test.myfunc;}#includeiostreamhclassA{private:inta;pub1ic Ainti=0{a=i;}voidprint;;voidA:print{cout«”Inc1assAprintiscalled.Mendl;classB:pub1icAprivate:intb;public:Bintj=-l{b=j;};voidcommfunAaref{aref.print;}voidmainAa;commfuna;Bb;commfunb;#includeiostream.hclassXl{private:intx;public Xlinti{x=i;}intgetx;friendvoidsumX1aX1b;};intX1::gctx{returnx;}voidsumXIaX1b{coutV用友元函数求各和a.x+b.x«endl;voidsum1X1aX1b{cout”用普通函数调用类公共接口函数求和”«a.getx+b.getx«end1;voidmain{XIml;XIn2;summn;sum1mn;答案.执行结果如下构造新同学Noname构造新同学zhang构造copyofzhang构造指导教师析构copyofzhang析购zhang析构Noname.该程序的执行结果是basclisca11cdbase2iscailedderivedclassiscalied.程序的结果Zhang编号1Wang编号2Li编号
3.程序的结果数组元素总数为50array
[49]=49数组元素总数为100array
[99]=
109.其执行结果是conslructstudent.constructteacher.constructtourpair.backininain..程序的运营结果为x=100y=200Inmyfunc x=9y=10Myclass::x=100Myclass::y=
200.程序的运营结果为Inc1assAprintiscalied.InclassAprintiscalled..程序的运营结果为用友元函数求各和:3用普通函数调用类公共接口函数求和3
六、编程题.定义类模板ABC内含成员函数setflgeto用ABC生成对象abcl和abc2o它们的数组元素数不同显示的结果也不同#includeiostream.h//定义类模板ABCtemplateclassTin11classABC{private TarrayfI1产〃定义数组arraypub1ic:voidsetintx//定义成员函数set{inti;fori=0;iI;i++〃循环I次arrayfi]=x+i;//数组元素赋值Voidget〃定义成员函数get{coutn\n数组元素总数为:VvI«endl;cout«uarray[I—1]=«array[l—11endl;}};voidmain{//由模板ABC生成对象abclABCint5Oabcl;abc
1.setO;〃调用对象abcl.setabc
1.get;〃调用对象abc
1.get//由模板ABC生成对象abc2ABCint100abc2;abc
2.set10;//调用对象abc
2.setabc
2.get;//调用对象abc
2.get^Bui]d_l是一个关于楼房数据的类它的数据成员有posi_x.posi_y和area分别是楼房位置的经、纬度和建筑面积它的函数成员只有set1用于设立数据成员posi.x.posLy和area的值让Build_1作为基类,再增长数据成员high、函数成员set2和disp来定义派生类Build_2#includeiostream.hc1assBuild_l〃定义基类{protected:intposi_x;//有三个保护型的数据成员intposi_y;intarea;在OOP中,将“对象”作为系统中最基本的运营实体,整个程序即由各种不同类型的对象组成,各对象既是一个独立的实体,又可通过消息互相作用,对象中的方法决定要向哪个对象发消息、发什么消息以及收到消息时如何进行解决等
6、面向对象方法的特点是什么?1OOP以“对象”或“数据”为中心由于对象自然地反映了应用领域的模块性,因此具有相对稳定性,可以被用作一个组件去构成更复杂的应用乂由于对象一般封装的是某一实际需求的各种成分,因此,某一对象的改变对整个系统几乎没有影响2引入了“类”class的概念类与类以层次结构组织,属于某个类的对象除具有该类所描述的特性外,还具有层次结构中该类上层所有类描述的所有性质,OOP中称这种机制为继承300P方法的模块性与继承性,保证了新的应用程序设计可在原有对象的数据类型和功能的基础上通过重用、扩展和细化来进行,而不必从头做起或复制原有代码,这样,大大减少了重新编写新代码的工作量,同时减少了程序设计过程中犯错的也许性,达成了事半功倍的效果
7、面向对象的程序设计方法与结构化程序设计方法的比较1传统的结构化程序设计方法以过程为中心构造应用程序,数据和解决数据的过程代码是分离的、互相独立的实体设计出的程序可重用代码少,且当代码量增长时维护数据和代码的一致性困难2面向对象程序设计方法中,对象所具有的封装性和继承性使得代码重用成为也许,并大大减少了程序犯错的也许性3面向对象方法吸取了结构化程序设计方法的优点,同时引入了新概念、新机制并建立了比传统方法更高层次的抽象
二、选择题略
三、填空题publie:voidset1intxintyinta{posi_x=x;posi_y=y;area=a;};//定义派生类Bui1d_2c1assBuild_2:publieBuild_1{intheight;public:voidset2inthheight=h;}voiddisp{cout«\n经度n«posi—x«endl;cout«M纬度v〈posi_y«endI;cout«高度:vVheightendI;coutMffi^R:areaendl«endl;}};voidmain{//用Build_2生成对象bjBui1d_2obj;obj.setl100200300;obj.set2400;obj.disp;1类是一个支持集成的抽象数据类型,而对象是类的【1】O【参考答案】
[1]实例2在C++语言的面向对象程序设计框架中,【2】是程序的基本组成单元【参考答案】
[2]类3C++语言程序的注释可以出现在程序中的任何地方,一个注释以【3】作为开始和结束的标记【参考答案】
[3]/**/4以下程序的输出结果是【4】.#includeiostreamhvoidfun{staticinta;a+=2;cout«a«}voidmain{intcc;forcc=l;cc4;cc++fun;coutend1;【参考答案】
[4]2465下列程序在构造函数和析构函数中申请和释放类的数据成员ini*a申请时使用形参b初始化a请填空classA{public:Aintb;〜A;private:int*a;};A:Aintb【5】;}A::~A{【6】;}【参考答案】]a=newintb;
[6]deletea多态性与【7】和【8】共同构成面向对象程序设计的三大机制【参考答案】
[7]数据封装【8】继承7将x+y*z中的“用成员函数重载,”用友元函数重载应写为【9】o【参考答案】
[9]x.opcrator+operator*yz8派生类的成员一般分为两部分,一部分是
[10],另一部分是自己定义的新成员【参考答案】
[10]从基类继承的成员9以下程序输出的结果是【11】o#ineludeiostream.hvoidmain{inta=5b=4c=3d;d=abc;cout«d;}【参考答案】010假如要把返回值为void的函数A声明为类B的友元函数,则应在类B的定义中加入的语句是【12】【参考答案】friendvoidA;11假如类B继承了类A.则称类A为类B的基类,类B称为类A的
[13]【参考答案】
[13]派生类12将x+y中的+运算符用友元函数重载应写为【14】【参考答案】
[14]operator+xyI3已知程序的结果为123请填空#inc1udetemp1ateclassA{pub1ic:Txyz;voiddisplay{cout«x««y«z;}};voidmain{Aa1;
[15]
[17]a
1.display;}【参考答案】
[15]al.x=1
[16]al.y=2
[17]al.z=314下列程序段的输出结果是
[18]ocout«fixed
509.endl【参考答案】
509.123457
四、综合应用题.使用VC6打开考生文献夹下的工程ktl5_3o此工程包含一个ktl5_
3.cpp其中定义了类A、A1和A2其中Al类由A类公有派生A2类由Al类公有派生上述三个类的定义并不完整,请按规定完毕下列操作,将程序补充完整1定义类A的构造函数,该构造函数有一个整型的参数x在构造函数中请将x赋值给数据成员a请在注释“〃**1**”之后添加适当的语句2定义类A1的构造函数该构造函数有两个整型参数x和y在构造函数中请将x赋值给数据成员b将y作为基类A构造函数的参数值传入请在注释“/后添加适当的语句3定义类A2的构造函数,该构造函数有三个整型的参数xy和z,在构造函数中请将x赋值给数据成员c将y和z分别赋值给基类A1构造函数的参数x和y请在注释“//**3**”之后添加适当的语句4完毕类A2的成员函数show的定义,该函数调用基类成员函数,输出基类数据成员a和b及类A2自身的数据成员c的值上述三个值在输出时以空格隔开请在注释“//**4**”之后添加适当的语句注意:除在指定位置添加语句之外,请不要改动程序中的其他内容程序输出结果如卜.962源程序文献kt15_
3.cpp清单如下:#inciudeiostream.hclassA{inta;publie//**i**intgcta{returna}};classA1:publicA{intb;public://**2木*intgetb{returnb;};cIassA2:publicAl{intc;public://**3**voidshow{〃**4**}};voidinain{A2a269;cout«a.getaend1;cout«a.getb«endl;a.show;}【参考答案】lAintx{a=x;}A1intxinty:Ay{b=x;}A2intxintyintz:A1yz{c=x;cout«geta«M«getb«;coutcn;
五、阅读程序题写出程序运营结果I.#includeioslream.h#includestring.hc1assStudent{public Studentchar*pName=Noname{cout构造新同学H«pName«endl;strncpynamepNamesizeofname;name[sizeofname;StudentStudents{coutvV”构造copyof«s.name«endI;strcpynamecopyof;strcatnames.name;I〜Student{c析构name«end1;}protected charname
[40];};classTutor{publie TutorStudents:students{cout构造指导教师\n;protected:Studentstudent;;voidmain{Studentstl;Studentst2zhang Tutorluorst2;#includeiostream.hclassB1{protected:intbl;pub1ic Blintva11{b1=valIcoutbaseliscalledendl;};c1assB2{protected:intb2;public:B2intva12。