面向对象.docx
- 文档编号:29828150
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:16
- 大小:19.59KB
面向对象.docx
《面向对象.docx》由会员分享,可在线阅读,更多相关《面向对象.docx(16页珍藏版)》请在冰豆网上搜索。
面向对象
做试题,没答案?
上自考365,网校名师为你详细解答!
全国2001年10月自考面向对象程序设计试题
课程代码:
02328
第一部分选择题(共20分)
一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个选项中只有一个选项是符合题目要求的,请将其代码填在题后的括号内。
错选或未选均无分。
1.D2.B3.B4.A5.A
6.A7.B8.D9.C10.C
1.在C++中,函数原型不能标识()
A.函数的返回类型B.函数参数的个数
C.函数参数类型D.函数的功能
2.在C++程序中,对象之间的相互通信通过()
A.继承实现B.调用成员函数实现
C.封装实现D.函数重载实现
3.对于任意一个类,析构函数的个数最多为()
A.0B.1C.2D.3
4.下面函数模板定义中不正确的是()
A.template
QF(Qx){QF(Qx){
returnQ+x;returnx+x;
}}
C.template
TF(Tx){TF(Tx){
returnx*x;returnx>1;
}}
5.友元关系不能()
。
。
B.是类与类的关系
C.是一个类的成员函数与另一个类的关系
D.提高程序的运行效率
6.语句ofstreamf(″SALARY.DAT″,ios:
:
app|ios:
:
binary);的功能是建立流对象f,试图打开文件SALARY.DAT并与之连接,并且()
A.若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件
B.若文件存在,将其置为空文件;若文件不存在,打开失败
C.若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件
D.若文件存在,打开失败;若文件不存在,建立一个新文件
7.下面说法正确的是()
A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方
B.内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方
C.类的内联函数必须在类体内定义
D.类的内联函数必须在类体外通过加关键字inline定义
8.可以用p.a的形式访问派生类对象p的基类成员a,其中a是()
A.私有继承的公有成员B.公有继承的私有成员
C.公有继承的保护成员D.公有继承的公有成员
9.在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是()
A.派生类的对象可以赋给基类的对象
B.派生类的对象可以初始化基类的引用
C.派生类的对象可以直接访问基类中的成员
D.派生类的对象的地址可以赋给指向基类的指针
10.对于类定义
classA{
public:
virtualvoidfunc1(){}
voidfunc2(){}
};
classB:
publicA{
public:
voidfunc1(){cout<<″classBfunc1″< virtualvoidfunc2(){cout<<″classBfunc2″< }; 下面正确的叙述是() A.A: : func2()和B: : func1()都是虚函数 B.A: : func2()和B: : func1()都不是虚函数 C.B: : func1()是虚函数,而A: : func2()不是虚函数 D.B: : func1()不是虚函数,而A: : func2()是虚函数 第二部分非选择题(共80分) 二、填空题(本大题共10小题,每小题2分,共20分)不写解答过程,将正确的答案写在每小题的横线处。 错填或不填均无分。 11.定义类的动态对象数组时,系统只能够自动调用该类的_________构造函数对其进行初始化。 12.在C++程序设计中,建立继承关系倒挂的树应使用_________继承。 13.表达式cout< 14.基类的公有成员在派生类中的访问权限由_________决定。 15.C++支持的两种多态性分别是_________多态性和_________多态性。 16.C++中语句constchar*constp=″hello″;所定义的指针p和它所指的内容都不能被_________。 17.假定AB为一个类,则语句AB(AB&x);为该类_________构造函数的原型说明。 18.将关键字const写在成员函数的_________和_________之间时,所修饰的是this指针。 19.在C++中,访问一个对象的成员所用的运算符是_________,访问一个指针所指向的对象的成员所用的运算符是_________。 20.派生类从一个或多个以前定义的该类的_________继承数据和函数。 三、改错题(本大题共5小题,每小题2分,共10分) 21.指出下面程序段中的错误,并说明出错原因。 classA{ inta,b; public: A(intaa,intbb){a=aa;b=bb;} }; Ax(2,3),y(4); 22.指出并改正下面利用类模板的对象定义中的错误。 template classTany{ Tx,y; public: Tany(Ta,Tb){x=a,y=b;} Tsum(){returnx+y;} }; Tany(int)obj(10,100); 23.指出下面程序段中的错误,并说明出错原因。 classone{ private: inta; public: voidfunc(two&); }; classtwo{ private: intb; friendvoidone: : func(two&); }; voidone: : func(two&r) { a=r.b; } 24.指出下面程序段中的错误,并说明出错原因。 #include classA{ public: voidfun(){cout<<″a.fun″< }; classB{ public: voidfun(){cout<<″b.fun″< voidgun(){cout<<″b.gun″< }; classC: publicA,publicB{ private: intb; public: voidgun(){cout<<″c.gun″< voidhun(){fun();} }; 25.指出下面程序段中的错误,并说明出错原因。 classLocation{ intX,Y=20; protected: intzeroX,zeroY; intSetZero(intZeroX,intZeroY); private: intlength,height; public: floatradius; voidinit(intinitX,intinitY); intGetX(); intGetY(); }; 四、完成程序题(本大题共5小题,每小题4分,共20分) 根据题目要求,完成程序填空。 26.在下面横线处填上适当字句,完成类中成员函数的定义。 classA{ int*a; public: A(intaa=0){ a=_________;//用aa初始化a所指向的动态对象 } ~A(){_________;}//释放动态存储空间 }; 27.下面是一个函数模板,用于计算两个向量的和。 在下面横线处填上适当字句,完成函数模板定义。 #include template T*f(T*a,T*b,intn) { T*c=_________; for(inti=0;i c[i]=_________; returnc; } voidmain() { inta[5]={1,2,3,4,5},b[5]={10,20,30,40},*p; p=f(a,b,5); for(inti=0;i<5;i++) cout< } 28.下面是一个用户口令检查程序,在横线处填上适当语句完成程序功能。 #include #include _________//定义由PASS指针所指向的口令wolleh。 voidmain() { charuser[10];//用于存放输入的口令 cout<<″pleaseinputyourpassword: ″< _________//输入口令 if((strcmp(user,PASS))==0) cout<<″yourpasswordiscorrect″< else cout<<″yourpasswordiserror″< } 29.下面是类fraction(分数)的定义,其中重载的运算符<<以分数形式输出结果,例如将三分之二输出为2/3。 在横线处填上适当字句。 classfraction{ intden;//分子 intnum;//分母 friendostream&operator<<(ostream&,fraction); … }; ostream&operator<<(ostream&os,fractionfr){ _________; return_________; } 30.在下面程序横线处填上适当的字句,使其输出结果为0,56,56。 #include classbase{ public: _________func(){return0;} }; classderived: publicbase{ public: inta,b,c; _________setValue(intx,inty,intz){a=x;b=y;c=z;} intfunc(){return(a+b)*c;} }; voidmain() { baseb; derivedd; cout< d.setValue(3,5,7); cout< base&pb=d; cout< } 五、程序分析题(本大题共6小题,每小题5分,共30分) 给出下面各程序的输出结果。 31.#include voidmain() { int*a; int*&p=a; intb=10; p=&b; cout<<*a; } 输出为: 32.#include template Tf(T*a,T*b,intn){ Ts=(T)0; for(inti=0;i s+=a[i]*b[i]; returns; } voidmain() { doublec[5]={1.1,2.2,3.3,4.4,5.5},d[5]={10.0,100.0,1000.0}; cout< } 输出为: 33.#include voidmain() { for(inti=0;i<4;i++) cout< < ′0′: ′′); } 输出为: 34.运行下面的程序,写出当输入25,60时的输出结果。 #include classgoods{ private: staticinttotalWeight; intweight; public: goods(intw) { weigh=w; totalWeight+=w; } goods(goods&gd) { weight=gd.weight; totalWeight+=weight; } ~goods() { totalWeight-=weight; } intgetwg() { returnweight; } staticintgetTotal() { returntotalWeight; } }; intgoods: : totalWeight=0; voidmain() { intw; cout<<″Theinitialweightofgoods: ″< : getTotal()< cin>>w;//输入25 goodsg1(w); cin>>w;//输入60 goodsg2(w); cout<<″Thetotalweightofgoods: ″< : getTotal()< } 输出为: 35.#include classA{ public: A(){} virtualvoidfunc(){cout<<″DestructorA″< ~A(){func();} }; classB: publicA{ public: B(){} voidfunc(){cout<<″DestructorB″< ~B(){func();} }; voidmain() { Bb; A&a=b; } 输出为: 36.#include classMyClass{ public: intnumber; voidset(inti); }; intnumber=3; voidMyClass: : set(inti) { number=i; } voidmain() { MyClassmy1; intnumber=10; my1.set(5); cout< my1.set(number); cout< my1.set(: : number); cout< } 输出为: 全国2001年10月面向对象程序设计试题参考答案 课程代码: 02328 第一部分选择题(共20分) 一、单项选择题(本大题共10小题,每小题2分,共20分) 1.D2.B3.B4.A5.A 6.A7.B8.D9.C10.C 第二部分非选择题(共80分) 二、填空题(本大题共10小题,每小题2分,共20分) 11.无参 12.单一(或单) 13.cout<<′\n′(或cout<<′\12′,或cout<<′\xA′,或其它等价形式) 14.访问控制(或其它等价形式) 15.编译时的(或静态,或操作重载) 运行时的(或动态,或虚函数) 16.改变(或重新赋值) 17.复制初始化(或拷贝) 18.函数头(或参数表)函数体 19.成员选择运算符(或“.”)成员访问运算符(或“->”) 20.基类 三、改错题(本大题共5小题,每小题2分,共10分) 21.Ax(2,3),y(4);语句出错,因为没有单参数的构造函数(或者y(4)少写了一个参数)。 22.Tany(int)obj(10,100);出错,应为Tany 23.voidfunc(two&);出错,two尚未声明(或应在classone前加声明语句classtwo;)。 24.voidhun(){fun();}出错,C: : fun()有二义性。 25.intX,Y=20;出错,不能采用这种方式初始化。 四、完成程序题(本大题共5小题,每小题4分,每空2分,共20分) 26.newint(aa)deletea 27.newint[n]a[i]+b[i](或等价形式) 28.constchar*PASS=″wolleh″;(或constcharPASS[]=″wolleh″;) cin.getline(user,9);(或cin>>user;) 29.os< 30.virtualintvoid 五、程序分析题(本大题共6小题,每小题5分,共30分) 31.10 32.3531 33.0 0*0 0***0 0*****0 34.Theinitialweightofgoods: 0 2560(这是输入数据) Thetotalweightofgoods: 85 35.DestructorB DestructorA 36.5 10 3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象