《2022年面向对象程序设计试题 .pdf》由会员分享,可在线阅读,更多相关《2022年面向对象程序设计试题 .pdf(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1 / 10 一、单项选择题(本大题共10 小题,每小题2 分,共 20 分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1.一个函数功能不太复杂,但要求被频繁调用,选用()A.内联函数B重载函数C递归函数D嵌套函数2.C+的继承性允许派生类继承基类的()A.部分特性,并允许增加新的特性或重定义基类的特性B部分特性,但不允许增加新的特性或重定义基类的特性C所有特性,并允许增加新的特性或重定义基类的特性D所有特性,但不允许增加新的特性或重定义基类的特性3在 C+中,封装是借助什么达到的?()A结构B类C数组D函数4.建立包含有类对象
2、成员的派生类对象时,自动调用构造函数的执行顺序依次为()A.自己所属类、对象成员所属类、基类的构造函数B对象成员所属类、基类、自己所属类的构造函数C基类、对象成员所属类、自己所属类的构造函数D基类、自己所属类、对象成员所属类的构造函数5.类的析构函数是对一个对象进行以下哪种操作时自动调用的?()A.建立B撤消C赋值D引用6.下列不是描述类的成员函数的是()A.构造函数B析构函数C友元函数D拷贝构造函数7.所有在函数中定义的变量,连同形式参数,都属于()A.全局变量B局部变量C静态变量D寄存器变量8.假定 AB 为一个类,则执行AB x ;语句时将自动调用该类的()A.有参构造函数B无参构造函数
3、精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 10 页2 / 10 C拷贝构造函数D赋值构造函数9.假定 AA 为一个类, a()为该类公有的函数成员,x 为该类的一个对象,则访问x 对象中函数成员 a()的格式为()A.x.a Bx.a() Cx-a Dx-a() 10.对于任一个类,用户所能定义的构造函数的个数至多为()A.0 B1 C2 D任意个二、填空题 (本大题共 10 小题,每小题2 分,共 20 分) 请在每小题的空格中填上正确答案。错填、不填均无分。11对象的四大基本特性是多态性、继承性、_和封装性。12为了使类中的成
4、员不能被类外的函数通过成员操作符访问,则应把该成员的访问权限定义为 _。13 C+程序的源文件扩展名为_。14所有模版都是以_关键字和一个形参表开头的。15在 #include 命令中所包含的头文件,可以是系统定义的头文件,也可以是_定义的头文件。16一个 const 对象只能访问_成员函数。17 C+是通过引用运算符_来定义一个引用的。18若 y 是 x 的引用,则对y 的操作就是对_的操作。19执行 _操作将释放由p 所指向的动态分配的数据空间。20 C+的流库预定义了4 个流,它们是cin、cout、_和 clog。三、改错题 (本大题共 2 小题,每小题6 分,共 12 分) 21.假
5、定下面程序将分数a 和 b 相加,其和赋值给c 并输出,要求输出结果为“13/18”,其主函数 5 到 8 行之间存在着三行语句错误,请指出错误行的行号并改正。#include class Franction /定义分数类int nume。/定义分子int deno。/定义分母public: 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 10 页3 / 10 /把*this 化简为最简分数,具体定义在另外文件中实现void FranSimp() 。/返回两个分数*this 和 x 之和,具体定义在另外文件中实现Franction Fr
6、anAdd(const Franction& x)。/置分数的分子和分母分别0 和 1 void InitFranction() nume=0。 deno=1。 /置分数的分子和分母分别n 和 d void InitFranction(int n,int d) nume=n。 deno=d。 /输出一个分数void FranOutput() coutnume/denoendl 。 。void main() /1 行 /2 行Franction a,b,c。/3 行a.InitFranction(7,18) 。/4 行b.InitFranction(1) 。/5 行c.InitFranction
7、() 。/6 行c=FranAdd(a,b) 。/7 行coutc.nume /c.denoendl。/8 行 /9 行错误行的行号为_、_和 _。分别改正为 _、_和_。22下面是一个类的定义,在5到 12 行之间有3 行存在语法错误,请指出错误行的行号并改正。class CE /1 行private: /2 行int a,b。/3 行int getmin() return (ab?a:b) 。 /4 行public /5 行精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 10 页4 / 10 int c。/6 行void SetVa
8、lue(int x1,int x2,int x3) /7 行a=x1。b=x2。c=x3。/8 行 。/9 行int GetMin() 。/10 行 。/11 行int GetMin() /12 行int d=getmin() 。/13 行return(dc? d:c) 。/14 行 /15 行错误行的行号为_、_和 _。分别改正为 _、_和_。四、程序填空题(本大题共3 小题,每小题6 分,共 18分)请按提示要求完成以下程序段的填空。23 class A int a,b。public: _(1)_ / 定义构造函数,使参数aa和 bb 的默认值为0,/在函数体中用aa初始化 a,用 bb
9、初始化 b 。main() A *p1,*p2 。_(2)_。 /调用无参构造函数生成由p1 指向的动态对象_(3)_。 /调用带参构造函数生成由p2 指向的动态对象,/使 a和 b 成员分别被初始化为4 和 5 (1)(2)(3) 24.一种类定义如下: #include 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 10 页5 / 10 #include class Books private: char bk_name20。 /书的名称int price 。/书的价格static int totalprice 。/同类书总价格p
10、ublic: Books(char*str,int p)/ 构造函数strcpy(bk_name,str)。/strcpy 函数将 str 字符串的内容拷贝到bk_name price=p。totalprice+=price 。 Books()totalprice-=price。 char*GetN()_(4)_ 。/ 返回书名称int GetP()return price 。 _(5)_GetTotal_Price() /定义静态成员函数_(6)_。/返回总价格 。(4)(5)(6) 25.已知一个类的定义如下:#include class AA int a10。int n。public:
11、void SetA(int aa ,int nn)。 /用数组 aa初始化数据成员a,/用 nn 初始化数据成员n 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 10 页6 / 10 int MaxA() 。 /从数组 a中前 n个元素中查找最大值void SortA() 。 /采用选择排序的方法对数组a中前 n个元素/进行从小到大排序void InsertA() 。 /采用插入排序的方法对数组a中前 n 个元素进行从小到大排序void PrintA() 。 /依次输出数组a中的前 n 个元素 。voidAA:SortA() int
12、i,j 。for(i=0 。 _(7)_。i+) int x=a i,k=i 。for(j=i+1 。 jn。 j+) if(a jx) x=aj。k=_(8)_ 。 ak=ai。ai=_(9)_。 (7)(8)(9) 五、程序分析题(本大题共6 小题,每小题5 分,共 30分)阅读以下程序,写出其运行结果。26 #include const int N=6 。void fun() 。void main() for(int i=1 。iN 。i+) 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 10 页7 / 10 fun() 。 v
13、oid fun() static int a=2 。cout(a+=3) 。 27 #include #include class fun friend ostream& operator(ostream&,fun)。ff 。ostream& operator(ostream& os,fun f) os.setf(ios:left) 。return os。 void main() coutsetfill( *)setw(10)12345endl 。coutffsetw(10)54321endl。 28 #include class a public: virtual void func()co
14、utfunc in class aendl。 。class b 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 10 页8 / 10 public: virtual void func()coutfunc in class bendl。 。class c:public a,public b public: void func()coutfunc in class cendl。 。void main() c c。a &pa=c。b &pb=c 。pa.func()。pb.func()。 29 #include class testa pu
15、blic: testa()a1=0 。 testa(int i)a1=i 。 void printout()couta1。 private: int a1。class testb:public testa public: testb()b1=0 。 。testb(int i,int j,int k) 。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 10 页9 / 10 void printout() 。private: int b1。testa aa。testb:testb(int i,int j,int k):testa(i),aa
16、(j)b1=k。 void testb:printout() testa:printout() 。coutendl。 void main() testb tt2。tt0=testb(9,3,5)。tt1=testb(8,4,7)。for(int i=0 。i2。i+) tti.printout() 。 30.#include void main() for(int i=-1 。i4。i+) cout(i ? 0:* )。 31 #include class Date int Year,Month,Day 。public: void SetDate(int y,int m,int d)Year=
17、y。Month=m 。Day=d。 void PrintDate()coutYear/Month/Dayendl。 Date()SetDate(2000,1,1) 。 Date(int y,int m,int d)SetDate(y,m,d)。 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 10 页10 / 10 。class Time int Houre,Minutes,Seconds 。public: void SetTime(int h,int m,int s)Houre=h。Minutes=m 。Seconds=s。 void
18、 PrintTime()coutHoure:Minutes:Secondsendl。 Time()SetTime(0,0,0) 。 Time(int h,int m,int s)SetTime(h,m,s)。 。class Date_Time:public Date,public Time public: Date_Time():Date(),Time()。Date_Time(int y,int mo,int d,int h,int mi,int s): Date(y,mo,d),Time(h,mi,s) void PrintDate_Time()PrintDate()。 PrintTime() 。 。void main() Date_Time dt_a,dt_b(2002,10,1,6,0,0) 。dt_a.PrintDate_Time() 。dt_b.SetTime(23,59,59) 。dt_b.PrintDate_Time() 。dt_a.SetDate(2002,12,31)。dt_a.PrintDate_Time() 。 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 10 页