全国高等教育自学考试面向对象程序设计试题.docx
- 文档编号:27315887
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:16
- 大小:18.38KB
全国高等教育自学考试面向对象程序设计试题.docx
《全国高等教育自学考试面向对象程序设计试题.docx》由会员分享,可在线阅读,更多相关《全国高等教育自学考试面向对象程序设计试题.docx(16页珍藏版)》请在冰豆网上搜索。
全国高等教育自学考试面向对象程序设计试题
全国2006年1月高等教育自学考试
面向对象程序设计试题
课程代码:
02328
一、单项选择题(本大题共10小题,每小题2分,共20分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.面向对象程序设计中的数据隐藏指的是( )
A.输入数据必须输入保密口令B.数据经过加密处理
C.对象内部数据和代码合并在一起D.对象内部数据结构的不可访问性
2.在C++中,编写一个内联函数Fun,使用int类型的参数,求其平方并返回,返回值也为int类型,下列定义正确的是( )
A.intFun(intx){returnx*x;}B.inlineintFun(intx){returnx*x;}
C.intinlineFun(intx){returnx*x;}D.intFun(intx){inlinereturnx*x;}
3.下面关于重载函数的叙述中正确的是( )
A.重载函数必须具有不同的返回值类型
B.重载函数的形参个数必须不同
C.重载函数必须有不同的形参列表
D.重载函数的函数名可以不同
4.若有定义“intx=17;”,则语句“cout< A.11B.0x11 C.21D.021 5.下列关于析构函数的描述中正确的是( ) A.析构函数可以重载B.析构函数可以是虚函数 C.析构函数名与类名相同D.析构函数的返回类型为void 6.下列关于纯虚函数的描述中,正确的是( ) A.纯虚函数是一种特殊的虚函数,它是个空函数 B.具有纯虚函数的类称为虚基类 C.一个基类中说明有纯虚函数,其派生类一定要实现该纯虚函数 D.具有纯虚函数的类不能创建类对象 7.下列关于运算符重载的描述中,正确的是( ) A.可以改变运算符的目数B.可以改变运算符的优先级 C.可以改变运算符的结合性D.可以改变运算符的功能 8.要将类A说明是类B的虚基类,正确的描述是( ) A.classvirtualB: publicAB.classB: virtualpublicA C.virtualclassB: publicAD.classB: publicAvirtual 9.下面关于静态成员的描述中,正确的是( ) A.静态数据成员是类的所有对象共享的数据 B.类的每个对象都有自己的静态数据成员 C.类的不同对象有不同的静态数据成员值 D.静态数据成员不能通过类的对象访问 10.假设Sample是个类,则语句“Samplea[2],*p[3];”调用构造函数的次数为( ) A.0B.2 C.3D.5 二、填空题(本大题共10小题,每小题2分,共20分) 请在每小题的空格中填上正确答案。 错填、不填均无分。 11.在面向对象的程序设计中,将一组对象的共同特性抽象出来形成________________。 12.在C++中要创建一个文件输入流对象fin,同时该对象打开文件“Test.txt”用于输入,则正确的声明语句是________________。 13.如果要把类B的成员函数voidfun()说明为类A的友元函数,则应在类A中加入语句________________。 14.A是一个类,已有语句“A*p;p=newA[10];”。 要释放由p指向的动态空间,正确的语句应该是________________。 15.如果一个引用不是用作函数参数或返回值,则在说明该引用时必须对它进行________________。 16.如果要把PI声明为值为3.14159类型为双精度实数的符号常量,该声明语句是________________。 17.在C++中函数原型不但要标识一个函数的返回类型,同时还要标识该函数的________________。 18.类A的后置自增运算符++以成员函数的形式进行重载,其在类内的函数声明是________________。 19.动态联编是通过基类类型的指针或引用调用________________函数来完成。 20.基类的保护成员通过私有派生其在派生类中的访问权限是________________。 三、改错题(本大题共5小题,每小题2分,共10分) 21.下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见。 classSample { private: intdata; Sample(){data=10;} public: Sample(intd){data=d;} intoperatorint(){returndata;} }; 22.下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见。 #include classPoint { intX,Y; public: Point(){X=0;Y=0;} Point(intx=0,inty=0){X=x;Y=y;} voiddisplay(){cout< }; 23.下面的程序有一处错误,请用下横线标出错误所在行并说明错误原因。 #include template voidSwap(T&a,T&b) { Tt; t=a,a=b,b=t; } voidmain() { inta=3,b=4; charstr1[5]=”abcd”,str2[5]=”hijk”; Swap(a,b); Swap(str1,str2); cout<<”a=”< cout<<”str1=”< } 24.下面的程序有一处错误,请用下横线标出错误所在行并说明错误原因。 #include classBase { public: virtualvoidfun(){cout<<"Basefunction"< }; classDerived: publicBase { public: voidfun(){cout<<"Derivedfunction"< }; voidmain() { Baseb; Derived*p=&b; b.fun(); p->fun(); } 25.下面的程序有一处错误,请用下横线标出错误所在行并说明错误原因。 #include classA { intx; protected: inty; public: A(intxx,intyy){x=xx;y=yy;} }; classB: publicA { public: B(inta,intb): A(a,b){} voiddisplay(){cout< }; voidmain() { Bb(5,10); b.display(); } 四、完成程序题(本大题共5小题,每小题4分,共20分) 根据题目要求,完成程序填空。 26.请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为: 2,1 4,3 #include classA { inta; public: A(inti=0){a=i;} intGeta(){returna;} }; classB { Aa; intb; public: B(inti=0,intj=0): ① {} voiddisplay(){cout< }; voidmain() { Bb[2]={B(1,2),B(3,4)}; for(inti=0;i<2;i++) ② ; } 27.下面程序中A是抽象类。 请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为: B1called B2called #include classA { public: ① ; }; classB1: publicA { public: voiddisplay(){cout<<”B1called”< }; classB2: publicA { public: voiddisplay(){cout<<”B2called”< }; voidshow(② ) { p->display(); } voidmain() { B1b1; B2b2; A*p[2]={&b1,&b2}; for(inti=0;i<2;i++) show(p[i]); } 28.请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为: Name: 王小明 Grade: 90 #include #include classPerson { charname[20]; public: Person(char*s){strcpy(name,s);} voiddisplay(){cout<<”Name: ”< }; classStudent: publicPerson { intgrade; public: Student(char*s,intg): ① {grade=g;} voiddisplay() { ② ; cout<<”Grade: ”< } }; voidmain() { Students(“王小明”,90); s.display(); } 29.请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为5。 #include classInteger { intx; public: Integer(inta=0){x=a;} voiddisplay(){cout< ① ; }; IntegerMax(Integera,Integerb) { if(② ) returna; returnb; } voidmain() { Integera(3),b(5),c; c=Max(a,b); c.display(); } 30.请在下面的横线处填上适当内容,以使类的定义完整。 classArray { int*ptr; intsize; public: Array(){size=0;ptr=0;} Array(intn){size=n;ptr=newint[size];} Array(① ) //复制初始化构造函数 { size=a.size; ptr=newint[size]; for(inti=0;i ② ; //将源对象的动态数组内容复制到目标对象 } }; 五、程序分析题(本大题共6小题,每小题5分,共30分) 阅读下面的程序,写出程序运行的结果。 31.#include classTest { private: intnum; public: Test(intn=0){num=n;num++;} ~Test(){cout<<”Destructorisactive,number=”< }; voidmain() { Testx[2]; cout<<”Exitingmain”< } 32.#include classA { public: virtualvoidfun(intdata){cout<<”classA: ”< voidfun(char*str){cout<<”classA: ”< }; classB: publicA { public: voidfun(){cout<<”classB”< voidfun(intdata){cout<<”classB: ”< voidfun(char*str){cout<<”classB: ”< }; voidmain() { A*pA; Bb; pA=&b; pA->fun (1); pA->fun(“Hello”); } 33.#include voidmain() { cout.fill('*'); cout.width(10); cout<<"123.45"< cout.width(8); cout<<"123.45"< cout.width(4); cout<<"123.45"< } 34.#include classNum { intX,Y; public: Num(intx,inty=0){X=x;Y=y;} voidvalue(intx,inty=0){X=x;Y=y;} voidvalue(){ cout< if(Y! =0) cout<<(Y>0? ’+’: ’-’)<<(Y>0? Y: -Y)<<’i’; cout< } }; voidmain() { Numn (1); n.value(); n.value(2,3); n.value(); Numm(3,-4); m.value(); } 35.#include classSample { private: inti; staticintcount; public: Sample(); voiddisplay(); }; Sample: : Sample() { i=0; count++; } voidSample: : display() { cout<<"i="< } intSample: : count=0; voidmain() { Samplea,b; a.display(); b.display(); } 36.#include classA { inta; public: A(intaa=0){a=aa;cout<<"a="< }; classB { intb; public: B(intbb=0){b=bb;cout<<"b="< }; classC: publicB { Aa; public: C(){cout<<”Cdefaultconstructor”< C(inti,intj): a(i),B(j){cout<<”Cconstructor”< }; voidmain() { Cc1,c2(5,6); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国 高等教育 自学考试 面向 对象 程序设计 试题