还剩13页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
考试试题纸(B卷) 《面向对象程序设计》课程 计算机院(系)网络工程、计算机科学与技术 班级考试时量100分钟学生人数 命题教师 系主任 交题时间 年 月 日 考试时间 年 月 日
一、简答题(每小题5分,共20分)什么是类?什么是对象?对象与类的关系是什么?构造函数和析构函数的主要作用是什么?他们各有什么特性?派生类构造函数和析构函数的执行顺序是怎样的?什么是虚函数?虚函数与函数重载有哪些相同点和不同点?
二、选择题(每小题2分,共20分)1.假设已经有定义char*constpName=”Student”;下面的语句正确的是 A.pName
[3]=’t’; B.pName=”score”;C.pName=newchar
[5]; D.pName=newchar‘p’;
2.在下面有关对构造函数的描述中,正确的是 A. 构造函数可以带有返回值B. 构造函数的名字与类名完全相同C. 构造函数必须带有参数构造函数必须定义,不能缺省3.在下面有关析构函数特征的描述中,错误的是 A. 一个类中只能定义一个析构函数B. 析构函数名与类名完全相同C. 析构函数不能指定返回类型D. 析构函数不能带有参数4.假定AB为一个类,则执行“AB a4b
[3]*p
[2];”语句时,自动调用该类构造函数的次数为 A.3 B.4 C.6 D.
95.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为 A. ABoperator+AB aAB b B. AB operator+AB aC. operator+AB a D. AB operator+
6.假设定义了函数模版templateclassTTmaxTxTy{ returnxyx:y; }并定义了inti;charc;那么下列错误的调用该模版的是 A.maxii; B.maxcc;C.maxintci; D.maxci;7.模版的主要用途是为了 A.提高代码的运行效率B.实现多态性C.提高代码的重用性D.加强类的封装性8.下列说法错误的是 A.申明为指向基类对象的指针可以指向它的公有派生的对象,但不允许指向它的私有派生的对象B.允许将一个声明为指向基类的指针指向其公有派生类的对象,但是不能将一个声明为指向派生类对象的指针指向其基类的一个对象C.声明为指向基类对象的指针,当其指向公有派生类对象时,只能用它来直接访问派生类中从基类继承来的成员,而不能直接访问公有派生类中定义的成员D.以上说法都不对9.现有程序如下#includeiostream.h#includeiomanip.hvoidmain{intkk=1234;coutsetfill‘*’setw6kkendl;coutkkendl;}以上程序的运行结果是 A.1234 B.**1234 C.**1234 D.以上都不对1234 1234 **123410.在公有继承的情况下,基类成员在派生类中的访问权限 A.受限制 B.保持不变 C. 受保护 D. 不受保护
三、填空题(每空1分,共10分)假定类AB中有一个公有属性的静态数据成员bb,在类外不通过对象名访问该成员bb的写法为
(1) 通常情况下,当创建派生类对象时,首先执行
(2) 的构造函数,随后再执行
(3) 的构造函数,当撤销派生类对象时,则先执行
(4) 的析构函数,随后再执行
(5) 的析构函数ios类中有几个成员函数可以用来对输入输出进行格式化控制,格式控制主要是通过对
(6) 的操作来完成的所谓赋值兼容规则是指在需要基类对象的任何地方都可以使用
(7) 来替代纯虚函数是一个在基类中说明却没定义的虚函数,但要求在它的派生类中必须定义自己的版本,或重新说明为纯虚函数那么,纯虚函数的定义形式为
(8) 分别写出类AB的单目运算符”++”的前缀方式和后缀方式的友元函数重载一般形式
(9) 、
(10)
四、写出下面程序的运行结果(每小题5分,共20分)
1、#includeiostream.hclassMyclass{public: Myclass{} Myclassintaintbintc; voidGetNumber; voidGetSum;private: intxyz; staticintsum;};intMyclass::sum=0;Myclass::Myclassintaintbintc{ x=a;y=b;z=c; sum+=x+y+z;}voidMyclass::GetNumber{ coutnumber=xyzendl;}voidMyclass::GetSum{ coutsum=sumendl;}voidmain{ MyclassM3710; M.GetNumber; M.GetSum; MyclassN14911; N.GetNumber; N.GetSum; M.GetSum;}
2、#includeiostream.hclassTDate1{public: TDate1intyintmintd; ~TDate1; voidPrint;private: intyearmonthday;};TDate1::TDate1intyintmintd{ year=y; month=m; day=d; coutcontructorcalled.\n;}TDate1::~TDate1{ coutDestructorcalled.\n;}voidTDate1::Print{ coutyear.month.dayendl;}voidmain{ TDate1today200571tomorrow200572; couttodayis; today.Print; couttomorrowis; tomorrow.Print;}
3、#includeiostream.hclassDate{public: Date { coutDatecalled.endl; }private: unsignedintyearmonthday;};classEmployee{public: Employee { coutEmployeecalled.endl; }private: Datebirthday;};classManager:publicEmployee{public: Manager { coutManagercalled.endl; }private: unsignedintallowance;};intmain{ Managersusan; return0;}
4、#includeiostream.hclasscomplex{public: complexintrinti:realrimagi{} friendcomplexoperator++complex; friendcomplexoperator--complex; voidprint{ coutrealimagendl; }private: intrealimag;};complexoperator++complexo{ o.real++; o.imag++; returno;}complexoperator--complexo{ o.real--; o.imag--; returno;}voidmain{ complexobj1020obj_b3040; ++obj; obj.print; --obj_b; obj_b.print;}
五、编程题(每小题10分,共30分)
1、构建一个类book,其中含有两个私有数据成员qu和price,建立一个有5个元素的对象数组,将qu初始化为1~5,将price初始化为qu的10倍显示每个对象的qu*price
2、编写一个程序,用成员函数重载运算符“+”和“-”将两个二维数组相加和相减,要求第一个二维数组由构造函数设置,另一个二维数组的值由键盘输入
3、写一个函数模板,求数组中的最大元素使得函数调用时,数组类型和返回类型可以是整数也可以是双精度类型注请打印或用炭素墨水书写、字迹要求工整、并抄写在方框线内 共 页, 第 页,考试试题纸(B卷) 《面向对象程序设计》 课程 计算机、网络专业 班级考试时量100分钟学生人数 命题教师 系主任 交题时间 年 月 日 考试时间 年 月 日
一、简答题(每小题5分,共20分)什么是类?什么是对象?对象与类的关系是什么?构造函数和析构函数的主要作用是什么?他们各有什么特性?派生类构造函数和析构函数的执行顺序是怎样的?什么是虚函数?虚函数与函数重载有哪些相同点和不同点?
二、选择题(每小题2分,共20分)1.假设已经有定义char*constpName=”Student”;下面的语句正确的是 A.pName
[3]=’t’; B.pName=”score”;C.pName=newchar
[5]; D.pName=newchar‘p’;
2.在下面有关对构造函数的描述中,正确的是 A. 构造函数可以带有返回值B. 构造函数的名字与类名完全相同C. 构造函数必须带有参数构造函数必须定义,不能缺省3.在下面有关析构函数特征的描述中,错误的是 A. 一个类中只能定义一个析构函数B. 析构函数名与类名完全相同C. 析构函数不能指定返回类型D. 析构函数不能带有参数4.假定AB为一个类,则执行“AB a4b
[3]*p
[2];”语句时,自动调用该类构造函数的次数为 A.3 B.4 C.6 D.
95.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为 A. ABoperator+AB aAB b B. AB operator+AB aC. operator+AB a D. AB operator+
6.假设定义了函数模版templateclassTTmaxTxTy{ returnxyx:y; }并定义了inti;charc;那么下列错误的调用该模版的是 A.maxii; B.maxcc;C.maxintci; D.maxci;7.模版的主要用途是为了 A.提高代码的运行效率B.实现多态性C.提高代码的重用性D.加强类的封装性8.下列说法错误的是 A.申明为指向基类对象的指针可以指向它的公有派生的对象,但不允许指向它的私有派生的对象B.允许将一个声明为指向基类的指针指向其公有派生类的对象,但是不能将一个声明为指向派生类对象的指针指向其基类的一个对象C.声明为指向基类对象的指针,当其指向公有派生类对象时,只能用它来直接访问派生类中从基类继承来的成员,而不能直接访问公有派生类中定义的成员D.以上说法都不对9.现有程序如下#includeiostream.h#includeiomanip.hvoidmain{intkk=1234;coutsetfill‘*’setw6kkendl;coutkkendl;}以上程序的运行结果是 B.1234 B.**1234 C.**1234 D.以上都不对1234 1234 **123410.在公有继承的情况下,基类成员在派生类中的访问权限 A.受限制 B.保持不变 C. 受保护 D. 不受保护
三、填空题(每空1分,共10分)定类AB中有一个公有属性的静态数据成员bb,在类外不通过对象名访问该成员bb的写法为
(1) 通常情况下,当创建派生类对象时,首先执行
(2) 的构造函数,随后再执行
(3) 的构造函数,当撤销派生类对象时,则先执行
(4) 的析构函数,随后再执行
(5) 的析构函数ios类中有几个成员函数可以用来对输入输出进行格式化控制,格式控制主要是通过对
(6) 的操作来完成的所谓赋值兼容规则是指在需要基类对象的任何地方都可以使用
(7) 来替代纯虚函数是一个在基类中说明却没定义的虚函数,但要求在它的派生类中必须定义自己的版本,或重新说明为纯虚函数那么,纯虚函数的定义形式为
(8) 分别写出类AB的单目运算符”++”的前缀方式和后缀方式的友元函数重载一般形式
(9) 、
(10)
四、写出下面程序的运行结果(第1小题6分,第
2、3小题7分,共20分)
1、#includeiostream.hclassMyclass{public: Myclass{} Myclassintaintbintc; voidGetNumber; voidGetSum;private: intxyz; staticintsum;};intMyclass::sum=0;Myclass::Myclassintaintbintc{ x=a;y=b;z=c; sum+=x+y+z;}voidMyclass::GetNumber{ coutnumber=xyzendl;}voidMyclass::GetSum{ coutsum=sumendl;}voidmain{ MyclassM3710; M.GetNumber; M.GetSum; MyclassN14911; N.GetNumber; N.GetSum; M.GetSum;}
2、#includeiostream.hclassTDate1{public: TDate1intyintmintd; ~TDate1; voidPrint;private: intyearmonthday;};TDate1::TDate1intyintmintd{ year=y; month=m; day=d; coutcontructorcalled.\n;}TDate1::~TDate1{ coutDestructorcalled.\n;}voidTDate1::Print{ coutyear.month.dayendl;}voidmain{ TDate1today200571tomorrow200572; couttodayis; today.Print; couttomorrowis; tomorrow.Print;}
3、#includeiostream.hclassDate{public: Date { coutDatecalled.endl; }private: unsignedintyearmonthday;};classEmployee{public: Employee { coutEmployeecalled.endl; }private: Datebirthday;};classManager:publicEmployee{public: Manager { coutManagercalled.endl; }private: unsignedintallowance;};intmain{ Managersusan; return0;}
五、编程题(每小题15分,共30分)
1、构建一个类book,其中含有两个私有数据成员qu和price,建立一个有5个元素的对象数组,将qu初始化为1~5,将price初始化为qu的10倍显示每个对象的qu*price
2、编写一个程序,用成员函数重载运算符“+”和“-”将两个二维数组相加和相减,要求第一个二维数组由构造函数设置,另一个二维数组的值由键盘输入注请用炭素墨水书写、字迹要求工整、并抄写在方框线内 共 页, 第 页,考试试题参考答案及评分细则《面向对象程序设计》课程(B卷) 计算机 院(系)网络工程、计算机 班级应试学生人数 实际考试学生人数 考试时量 100分钟 命题教师 审核人 考试时间 年 月 日
一、简答题(每小题5分,共20分)1.答类就是相同的数据和相同的一组对象的集合,即,类是对具有相同数据结构和相同操作的一类对象的描述;对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体,对象可以认为是数据+操作;类和对象之间的关系是抽象和具体的关系2.答构造函数主要用于为对象分配空间,进行初始化构造函数除了具有一般成员函数的特征外,还具有一些特殊的性质
(1)构造函数的名字必须与类名相同
(2)构造函数可以有任意类型的参数但不能指定返回类型它有隐含的返回值该值由系统内部使用
(3)构造函数是特殊的成员函数函数体可写在类体内也可写在类体外
(4)构造函数可以重载即一个类中可以定义多个参数个数或参数类型不同的构造函数
(5)构造函数被声明为公有函数但它不能像其他成员函数那样被显式地调用它是在定义对象的同时被调用的析构函数也是一种特殊的成员函数它执行与构造函数相反的操作通常用于撤消对象时的一些清理任务如释放分配给对象的内存空间等析构函数有以下一些特点:
(1)析构函数与构造函数名字相同但它前面必须加一个波浪号~;
(2)析构函数没有参数也没有返回值而且不能重载因此在一个类中只能有一个析构函数;
(3)当撤消对象时编译系统会自动地调用析构函数3.答略.详见教材P
151.4.答略.详见教材P
192.
二、选择题(每小题2分,共20分)1~10.A B B B B C C D B B
三、填空题(每空1分,共10分)
(1)AB::bb
(2)基类
(3)派生类
(4)派生类
(5)基类
(6)状态标志字
(7)公有派生类对象
(8)virtual函数类型函数名参数表=0;
(9)ABoperator++;
(10)ABoperator++int;
四、写出下面程序的运行结果(每小题5分,共20分)1.number=3710sum=20number=14911sum=54sum=542.contructorcalled.contructorcalled.todayis
2005.
7.1tomorrowis
2005.
7.2Destructorcalled.Destructorcalled.3.Datecalled.Employeecalled.Managercalled.4.1020 2939
五、编程题(每小题10分,共30分)略.注请用炭素墨水书写、字迹要求工整、并抄写在方框线内 共 页, 第 页,考试试题参考答案及评分细则《面向对象程序设计》课程(B卷) 计算机、网络专业 班级应试学生人数 实际考试学生人数 考试时量 100分钟 命题教师 审核人 考试时间 年 月 日
一、简答题(每小题5分,共20分)1.答类就是相同的数据和相同的一组对象的集合,即,类是对具有相同数据结构和相同操作的一类对象的描述;对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体,对象可以认为是数据+操作;类和对象之间的关系是抽象和具体的关系2.答构造函数主要用于为对象分配空间,进行初始化构造函数除了具有一般成员函数的特征外,还具有一些特殊的性质
(1)构造函数的名字必须与类名相同
(2)构造函数可以有任意类型的参数但不能指定返回类型它有隐含的返回值该值由系统内部使用
(3)构造函数是特殊的成员函数函数体可写在类体内也可写在类体外
(4)构造函数可以重载即一个类中可以定义多个参数个数或参数类型不同的构造函数
(5)构造函数被声明为公有函数但它不能像其他成员函数那样被显式地调用它是在定义对象的同时被调用的析构函数也是一种特殊的成员函数它执行与构造函数相反的操作通常用于撤消对象时的一些清理任务如释放分配给对象的内存空间等析构函数有以下一些特点:
(1)析构函数与构造函数名字相同但它前面必须加一个波浪号~;
(2)析构函数没有参数也没有返回值而且不能重载因此在一个类中只能有一个析构函数;
(3)当撤消对象时编译系统会自动地调用析构函数3.答略.详见教材P
151.4.答略.详见教材P
192.
二、选择题(每小题2分,共20分)1~10.A B B B B C C D B B
三、填空题(每空1分,共10分)
(1)AB::bb
(2)基类
(3)派生类
(4)派生类
(5)基类
(6)状态标志字
(7)公有派生类对象
(8)virtual函数类型函数名参数表=0;
(9)ABoperator++;
(10)ABoperator++int;
四、写出下面程序的运行结果(第1小题6分,第
2、3小题7分,共20分)1.number=3710sum=20number=14911sum=54sum=542.contructorcalled.contructorcalled.todayis
2005.
7.1tomorrowis
2005.
7.2Destructorcalled.Destructorcalled.3.Datecalled.Employeecalled.Managercalled.
五、编程题(每小题15分,共30分)略.注请用炭素墨水书写、字迹要求工整、并抄写在方框线内 共 页, 第 页,。