《2022年C++面向对象程序设计模拟试题五 .pdf》由会员分享,可在线阅读,更多相关《2022年C++面向对象程序设计模拟试题五 .pdf(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C+面向对象程序设计模拟试题五一、单项选择题(本大题共15 小题,每小题2 分,共 30 分)在每小题列出的四个备选项中,只有一个是苻合题目要求的。请将其代码填写在题后的括号内。错选,多选或未选均无分。1下列对类的构造函数和析构函数描述正确的是() 。A) 构造函数可以重载,析构函数不能重载B)构造函数不能重载,析构函数可以重载C)构造函数可以重载,析构函数可以重载D)构造函数不能重载,析构函数不能重载2在函数定义前加上关键字“inline ” ,表示该函数被定义为() 。A)重载函数B)内联函数C)成员函数D)普通函数3下面有关重载函数的说明中,()是正确的。A) 重载函数必须具有不同的返回
2、值类型B) 重载函数形参个数必须不同C) 重载函数必须具有不同的形参列表D) 重载函数名可以不同4下列有关类与对象的说法中,( ) 是不正确的。A) 对象是类的一个实列B) 任何一个对象只能属于一个具体的类C) 一个类只能有一个对象D) 类和对象的关糸和数椐类型与变量的关糸类似5已知 : Print( )函数是一个类的常成员函数,它无返回值,下列表示中,正确的是( )。A) void Print( ) const ;B) const void Print( ) ;C) void const Print( ) ;D) void Print(const) 6假定 Myclass 为一个类 ,那么下
3、列的函数说明中( )为该类的析构函数。A) void Myclass( ); B) Myclass( int n); C) Myclass( ); D) Myclass( ) 7下面类的定义中有( ) 处错误。class myclassint i=0; public: void myclass( ); myclass(value); A) 1 B)2 C)3 D)4 8说明虚函数的关键字是() 。A. inline B. virtual C. define D. static 9cout 是某个类的标准对象的引用,该类是() 。A. ostream B. istream C. stdout D
4、. stdin 10如果 class 类中的所有成员在定义时都没有使用关键字public、private 或 protected,则所有成员缺省定义为() 。A. public B. protected C. private Dstatic 11定义类模板时要使用关键字() 。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 13 页 - - - - - - - - - A. const B. new C. delete D. template 12 一个类的所有对象共享的
5、是() 。A. 私有数据成员B. 公有数据成员C. 保护数据成员D. 静态数据成员13静态成员函数没有() 。A. 返回值B. this 指针C. 指针参数D. 返回类型14解决多重继承中二义性问题的方法有() 。A. 只能使用作用域分辨操作符B. 使用作用域分辨操作符或赋值兼容规则C. 使用作用域分辨操作符或虚基类D. 使用虚基类或赋值兼容规则15如果在类CTest的外面函数调用CTest:f( ) ;则函数f( )是类 CTest的() 。A. 静态成员函数B. 非静态成员函数C. 友元函数D. 前面都不正确二、判断正误题(本大题共5 小题,每小题2 分,共 10 分)判断正误,在题后的括
6、号内,正确的划上“”错误的划上”。1构造函数可以设置默认参数2类的析构函数的作用是对象的初始化3cout 的默认输出对象是键盘, cin 的默认输入对象是屏幕4抽象类可以用来直接创建对象。5常对象可以调用任意成员函数。三、 填空题(本大题共5小题,每小题2 分,共 10 分)不写解题过程, 将正确的答案写在每小题的空格内,错填或不填均无分。1重载运算苻”的函数名为 ( )。2C+中类的用途有两种, 一种是类的实例化, 即生成类的对象, 另一种是通过( ),派生出新的类。3在下面程序的横线处填上正确的语句, 以实现动态多态。#include class Base public: virtual
7、void Fun() cout Base:Fun endl; ; class Derived: public Base public: void Fun() cout Derived:Fun Fun( ); /调派生类的成员函数Fun( ),以实现动态多态return 0; 4编译时多态性可以用()函数实现。5使用 new 建立的动态对象在不用时必须用()删除,以便释放所占用空间。四、程序分析题(本大题共8 小题,每小题3 分,共 24 分)给出下面各程序的输出结果。1若有以下程序: #include class A int a; public: A(int aa = 0 ) a = aa;
8、A( ) cout Destructor A! a endl; ; class B: public A int b; public: B(int aa = 0, int bb = 0): A(aa) b = bb; B() cout Destructor B! b endl; ; int main() B x(5), y(6,7); return 0; 上面程序的输出结果为:2若有以下程序: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 13 页 - - - - - -
9、 - - - #include class Point int x, y; public: Point() x = 0; y = 0; void SetPoint(int x1, int y1) x = x1; y = y1; void DisPoint() cout x= x , y= y SetPoint(5, 12); p-DisPoint(); delete p; return 0; 上面程序的输出结果为:3若有以下程序: #include class Sample int n; public: Sample (int i) n =i; void Add() s += n; stati
10、c int s; void Dis() cout s endl; ; int Sample:s = 0; int main() Sample a(2), b(5), c(8); a.Add( ); b.Add( ); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 13 页 - - - - - - - - - c.Dis( ); return 0; 上面程序的输出结果为:4若有以下程序: #include class Base public: void Fun() cou
11、t 1 endl; ; class Derived:public Base public: void Fun() cout 2 Fun(); a.Fun(); return 0; 上面程序的输出结果为:5若有以下程序: #include template void Fun(T1 &x, T2 &y) if (sizeof(T1) sizeof(T2) ) x = (T1)y; else y = (T2)x; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 13 页 - -
12、 - - - - - - - int main() double d; int i ; d = 99.99; i = 88; Fun(d,i); cout d= d i= i endl; return 0; 上面程序的输出结果为:6阅读下面程序,写出输出结果。#include using namespace std; class Point public: Point (int x = 0, int y = 0): m_x(x), m_y(y) int GetX() const return m_x; int GetY() const return m_y; void SetX(int x)
13、m_x = x; void SetY(int y) m_y = y; private: int m_x; / X 坐标int m_y; / X 坐标; int main(void) Point oPoint1; const Point oPoint2(3, 4); cout oPoint1.GetX() endl; oPoint1.SetX(1); cout oPoint1.GetX() endl; oPoint1.SetY(2); cout oPoint1.GetY() endl; cout oPoint2.GetX() endl; cout oPoint2.GetY() endl; ret
14、urn 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 13 页 - - - - - - - - - 上面程序的输出结果为:7. 阅读下面程序,写出输出结果。#include class Sample int i; public: Sample(); void Display( ); Sample(); ; Sample:Sample() cout constructor ,; i=0; void Sample:Display() cout i= i ,; Samp
15、le:Sample() cout destructor endl; int main() Sample a; a.Display(); return 0; 上面程序的输出结果为:8阅读下面程序,写出输出结果。#include using namespace std; class A int a,b; public: A() a = b = 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 13 页 - - - - - - - - - A(int aa, int bb)
16、 a = aa; b = bb; cout a b endl; ; int main() A x, y(2,3); return 0; 上面程序的输出结果为:五、程序改错题(本大题共3 小题,共3 处错 , 每改一错2 分,共 6 分)指出下面程序中错误 , 说明错误原因, 并加以改正。1下面程序中类的定义中有一处错误,请指出出错的行,说明错误原因,并加以改正。#include /1 using namespace std; /2 /3 class A /4 /5 public: /6 A(int i = 0, int j): mi(i), mj(j) /7 void Show() cout
17、mi mj endl; /8 private: /9 int mi, mj; /10 ; /11 /12 int main() /13 /14 A obj(12,16); /15 obj.Show(); /16 return 0; /17 /18 2下面程序中类的定义中有一处错误,请指出出错的行,说明错误原因,并加以改正。#include /1 using namespace std; /2 /3 class A /4 /5 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共
18、 13 页 - - - - - - - - - public: /6 A(int a):m_a = a /7 void Show() /8 cout m_a endl; /9 private: /10 int m_a; /11 ; /12 /13 int main() /14 /15 A obj(8); /16 obj.Show(); /17 return 0; /18 /19 3下面程序中类的定义中有一处错误,请指出出错的行,说明错误原因,并加以改正。#include /1 using namespace std; /2 /3 class Test /4 /5 public: /6 Test
19、(int iVar = 0):m_iArr(iVar) /7 cout 构造函数 : m_iArr endl; /8 void Test() /9 cout 析造函数 : m_iArr endl; /10 /11 private: /12 int m_iArr; /13 ; /14 /15 int main() /16 /17 Test obj1, obj2(8); /18 cout endl; /19 return 0; /20 /21 六、编程题(本大题共2 小题,每小题10 分,共 20 分)1设计一个类DateInfo ,要求其满足下述要求:名师资料总结 - - -精品资料欢迎下载 -
20、 - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 13 页 - - - - - - - - - (1)要求有一个无参的构造函数,其初始的年、月、日分别为:2010,6, 8。(2)要求有一个带参数的构造函数,其参数分别对应年、月、日。(3)要求用一个成员函数实现日期的设置。(4)要求用一个成员函数实现输出日期。要求用一个成员函数实现日期的获取。2定义一个复数类Complex, 二个数据成员为double 型 r, i 为 private 属性。定义代二个参数的构造函数和一个Show( ) 函数用以输出r, i 的值
21、, 另外作为成员函数重载的运算苻”+” 的功能是将此类二个对象的数据成员r 和 i 对应相加。这些成员函数的属性均为public. 请用 C+编写此程序 , 并编写测试程序进行测试。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 13 页 - - - - - - - - - C+ 面向对象程序设计模拟试题五参考答案一、单项选择题(本大题共15 小题,每小题2 分,共 30 分)在每小题列出的四个备选项中,只有一个是苻合题目要求的。请将其代码填写在题后的括号内。错选,多选
22、或未选均无分。1A)2 B)3C) 4C)5A) 6D) 7 C) 8B) 9A) 10 C) 11D) 12D) 13B) 14C) 15 A) 二、判断正误题(本大题共5 小题,每小题2 分,共 10 分)判断正误,在题后的括号内,正确的划上“”错误的划上”。1参考答案: “”2参考答案: “”3参考答案: “”4参考答案: “”5参考答案: “”三、 填空题(本大题共5小题,每小题2 分,共 10 分)不写解题过程, 将正确的答案写在每小题的空格内,错填或不填均无分1参考答案:oprator- 2参考答案:继承3参考答案:pb=&b 4参考答案:重载5参考答案:delete四、程序分析题
23、(本大题共8 小题,每小题3 分,共 24 分)给出下面各程序的输出结果。1输出结果为:Destructor B! 7 Destructor A! 6 Destructor B! 0 Destructor A! 5 2输出结果为: x=5, y=12 3输出结果为: 7 4输出结果为: 1 2 5输出结果为: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 13 页 - - - - - - - - - d=88i=88 6程序的输出结果为:0 1 2 3 4 7程序的输
24、出结果为:constructor,i=0,destructor 8程序的输出结果为:2 3 五、程序改错题(本大题共3 小题,共3 处错 , 每改一错2 分,共 6 分)指出下面程序中错误 , 说明错误原因, 并加以改正。1参考答案 : 第 7 行应从右自左默认,应改为A(int i,int j=0 ): mi( i ), mj( j ) 或改为A(int i = 0 , int j = 0): mi(i), mj(j) 2参考答案 : 第 7 行,改为A(int a): m_a(a) 3参考答案 : 第 9 行,析构函数无返回值类型(void 类型也不行 ),应改为 CTest() 六、编程
25、题(本大题共2 小题,每小题10 分,共 20 分)1参考程序:#include using namespace std; class DateInfo private: int year, month, day; public: DateInfo(): year(2010), month(6), day(8) DateInfo(int y, int m, int d): year(y), month(m), day(d) void Set(int y, int m, int d) year = y; month = m; 名师资料总结 - - -精品资料欢迎下载 - - - - - - -
26、- - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 13 页 - - - - - - - - - day = d; void Show() cout year 年 month 月 day 日 endl; ; int main() DateInfo d1, d2(1988, 8, 18); d1.Show(); d2.Show(); d2.Set(1999, 9, 19); d2.Show(); return 0; 2参考程序:#include using namespace std; class Complex private: double
27、 r, i; public: Complex(double a, double b): r(a), i(b) void Show() cout r i endl; Complex operator +(Complex obj) return Complex(r + obj.r, i + obj.i); ; int main() Complex c1(3.5, 4.5), c2(2.5, 5.5), c3(0.0, 0.0); c3 = c1 + c2; c3.Show(); return 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 13 页 - - - - - - - - -