东华理工大学2007—2008学年第1学期《面向对象程序设计》清考考试试题(A1)卷11、在类F2中声明了下列函数原型:错误的是B;构造函数的原型是;析构函数的原型是B。A、intf1(int,charbuffer);B、~F2();C、F2(intx,inty);D、f3(Myclass*ptr);一、选择题(每空2分,共32分)1、函数重载的根据是:DA.函数的返回值B.函数名C.函数参数的类型与个数D.函数体的功能相似。2、对于char*constpc=“china”,说法正确的是:BA、指针的指向可以改变B、指针所指向的内容可以改变C.指针的指向和指向的内容都能改变D.指针的指向的内容不可以改变3、关于虚函数,说法正确的是:BA、静态成员函数可以声明为虚函数B.构造函数可以声明为虚函数。C、内联函数可以声明为虚函数。D、析构函数可以声明为虚函数。4、下列不为某个类对象所独有的是:CA.private成员B.protected成员C.public成员D.static成员5、当函数功能不太复杂,而且要加快程序的执行速度,可以用:AA.内联函数B.重载函数C.递归函数D.嵌套函数6、假设A是B的友类,关于友类的声明是在:BA、A中B、B中C、main函数中D、main函数所在文件中且在main函数开始前7、下列说法正确的是:CA、在main函数中定义的变量是全局变量。B、为避免混淆,不同函数之间不能使用相同的变量名。C、形式参数属于局部变量。D、局部变量不能在复合语句中定义。8、下面语法中错误的是D。A、intn=5;inty[n];B、constintn=5;inty[n];C、intn=5;int*py=newint[n];D、constintn=5;int*py=newint[n];9、要想在不同类的所有对象中共享一个数据,则它应定义为A;要想在同一个类的所有对象中共享一个数据,则它应定义为B。A、静态数据成员B、保护数据成员C、全局的数据成员10、若类A中的数据成员X,被声明为静态成员,则B。A、X只能在类A中使用B、X只能在类A及类的派生类中使用C、X只能在静态函数中使用D类A的所有对象的X值相同12、在下列函数原型中错误的是B。A、.intadd(intx=3,inty=4,intz=5);B、.intadd(intx,inty=4,intz);C、.intadd(intx,inty=4,intz=5);D、intadd(intx,inty,intz=5);13、在类中说明的成员不可以使用关键字BC进行修饰。A、privateB、externC、autoD、public14、C++类体系中,不能被派生类继承的有D。A、转换函数B、构造函数C、虚函数D、静态成员函数15、创建或删除堆对象,需要使用操作符BA、-B、newC、deleteE、*16、定义类T的对象O的正确方法是A。A、TO;B、TO();C、OT;D、OT();二、填空题(每空1分,共28分)1.面向对象程序设计方法的四个基本特征是抽象、封装、继承、多态。2.类的定义格式一般地分为类名和对象名两部分。3.函数重载就是赋给同一个函数名多个含义。4.类的继承方式有三种,分别是private、public、protected。5.VC++中负责数据输入和管理的类是iostream;负责数据显示的类是cout。6.MFC中标准的设备环境封装类是对象;VC++中的坐标系统分为两类,分别是逻辑坐标和设备坐标。7.VC++中可通过invalidateRect方法使窗口重绘自身。8.VC++中的对话框是由CWnd类派生而来,对话框可分为模态和非模态两种。9.通过对象名或对象引用调用它的成员函数使用运算符*,而通过指向对象的指针调用它的类成员函数使用运算符::。10.指定为访问属性的类成员只能被本类的成员函数或友元函数调用。11.在VC++中,连接器所生成的文件的扩展名为.obj。12.动态分配一个int类型对象所需的存储空间使用运算符2,返回值的类型为整型。13.如果没有为类的成员对象提供成员初始化值,那么该对象的默认构造函数将被调用。14.派生类的构造函数是在其基类的构造函数执行之后执行的。15.每个对象都维护了一个指向自身的指针,这个指针称为this指针。说明:1.试题须用碳素墨水钢笔集中填在方格内,答题纸另附并装订于后,字迹须工整清晰;2.试题须经教研室或系(部)领导认真审核并签署本人代号;3.学生只须在第一页试题纸上填写姓名等东华理工大学2007—2008学年第1学期《面向对象程序设计》清考考试试题(A2)卷classA{private:staticintn1;三、改错题。指出下面每段程序中有什么错误,并提出改正方法。(每题各5分共15分)(1)#includeiostream.hintmain(){\\intx;cinx;*intp=x*x;coutp=pn;\\cout”p=”pendl;}(2)下列程序中包含三个错误,找出它们并说明错误原因。1.classMyClass2.{3.public:4.MyClass(intini){member=ini;}5.voidSetMe98mber(intm){member=m;}6.intGetMember()const{returnmember;}7.private:8.intmember;9.};10.voidmain()11.{12.MyClassobj1;\\MyClassobj1(2)13.MyClassobj2(3);;14.obj1.me0mber=5;*\\obj1.Member(5);15.MyClass.SetMember(10);\\obj2.SetMember(10);16.}(3)下列类中函数的声明与定义是否正确intn2;public:friendvoidview();A(){n1++;};};\\intn1=0;intA::n1=0;voidview()\\voidview(A,a){coutn1endl;\\couta.n1endl;coutn2endl;\\couta.n2endl;}四、程序填空(共25分)(1)、假如有这样的类定义:(5分)classstudent{private:intn;public:student(inti=10):n(i){};studentoperator++(int);};studentstudent::operator++(int){studenttemp;temp=(*this);n++;returntemp;}经过这样的调用后:studentstu1;studentstu2;stu2=(stu1++)++;填入:stu1.n=11stu2.n=12说明:1.试题须用碳素墨水钢笔集中填在方格内,答题纸另附并装订于后,字迹须工整清晰;2.试题须经教研室或系(部)领导认真审核并签署本人代号;3.学生只须在第一页试题纸上填写姓名等东华理工大学2007—2008学年第1学期《面向对象程序设计》清考考试试题(A3)卷if(hour23)hour=0;(2)、下面列出了由三个文件main.cpp、Clock.h和Clock.cpp组成的一个程序。文件main.cpp中实现了主函数;文件Clock.h中定义了类Clock;文件Clock.cpp中实现了类Clock的成员函数。题中没有给出三个文件的完整实现。仔细阅读所给的程序,根据题意补充文件Clock.h和文件Clock.cpp的内容。要求:1、将成员变量定义为私有的;2、不要增加题中没有用到的类成员。3、将构造函数和成员函数inc_and_print_time()定义为非内联函数,其它成员函数定义为内联函数。/***********************************************************************///文件main.cpp#includeiostream.h#includeClock.hvoidmain(){Clockc(3,44);//构造一个初始时间为3点44分的时钟对象[coutc.present_hour()endl;//输出当前小时值coutc.present_minute()endl;//输出当前分钟值c.inc_and_print_time();//时间增加一分钟,然后输出}/***********************************************************************///文件Clock.cppincludeiostream.h#includeClock.hvoidClock::inc_and_print_time(void){minute++;//分钟值加1if(minute59){minute-=60;hour++;}//输出提示信息cout\nItisnowhour:minute;}//在这里写出构造函数的实现函数(5分)Clock::clock(inth,intm){Hour=h;Minute=m;}/***********************************************************************///文件Clock.h//类Clock的定义classClock{//在下面写出类的定义体(10分)Public:Clock(inth,intm);Voidinc_and_print_time(void);};说明:1.试题须用碳素墨水钢笔集中填在方格内,答题纸另附并装订于后,字迹须工整清晰;2.试题须经教研室或系(部)领导认真审核并签署本人代号;3.学生只须在第一页试题纸上填写姓名等东华理工大学2007—2008学年第1学期《面向对象程序设计》清考考试试题(A4)卷voidmain(){postgraduatezh(“zhang”,21,’m’,”computer”);zh.print();(3)、为了完成main函数的正确调用,请完成程序。#includeiostream.h#includestring.hclassstudent{protected:charname[20];charsex;intage;public:voidprint(){cout“name:”name;cout“,age:”age;cout“,sex:”sexendl;}};classpostgraduate:publicstudent{charprofession[20];public:postgraduate(char*n,inta,chars,char*p){//下面写出是postgraduate类的构造函数的定义(5分)Strcopy=(name,n);Age=a;Sex=s;Strcopy(profession,p);}voidprint(){student::print();cout“profession:”professionendl;}};}\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ClassthreeD{\\intx;inty;intz;Public:threeDoperator+(threeDt);threeDoperator-(threeDt);threeDoperator++}threeD::operator{this-x+=t.x;this-y+=t.y;this-z+=t.z;Return*this}1\\\\\\\ClasspointPublic:说明:1.试题须用碳素墨水钢笔集中填在方格内,答题纸另附并装订于后,字迹须工整清晰;2.试