C面向对象程序设计模拟试题四 .docx
精品名师归纳总结C+ 面对对象程序设计模拟试卷四一、单项选择题(本大题共10 小题,每道题 2 分,共 20 分)在每道题列出的四个备选项中,只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多项或未选均无分。1. 以下关于 C+ 函数的说明中,正确选项()。A )内联函数就是定义在另一个函数体内部的函数B)函数体的最终一条语句必需是return 语句C)调用一个函数之前,假如仍没有定义这个函数,必需先声明其原型D)编译器会依据函数的返回值类型和参数表来区分函数的不同重载形式2. 假定 MyCIass 为一个类,那么以下的函数说明中,()为该类的无参构造函数。A ) void MyClass 。B) MyClassint n 。C) MyClass 。D)MyClass 。3以下表达中,错误选项()。A )派生类可以使用private 派生B)对基类成员的拜望必需是无二义性的 C)基类成员的拜望才能在派生类中保护不变D)赋值兼容规章也适用于多继承的组合4. 当一个类的某个函数被说明为virtual 时,该函数在该类及其全部派生类中() 。A. 都是虚函数B. 只有被重新说明为vittual 时才是虚函数C. 都不是虚函数D. 上面都不正确5. 派生类的构造函数的成员初始化表中,不能包含()。A )基类的构造函数B)派生类中子对象的初始化C)基类中子对象的初始化D)派生类中一般数据成员的初始化6以下是重载加法运算符的函数原型声明,其中错误选项()。A ) MyClass operator+double,double 。 B) MyClass operator+double,MyClass 。C) MyClass operator+MyClass,double 。D) MyClass operator+MyClass,MyClass 。7. 派生类中的成员不能直接拜望基类中的()成员。A ) publicB) privateC) virtual D) protected8. 实现运行时的多态性要使用()。A )重载函数B)析构函数C)构造函数D)虚函数9假如在类 MyClass 的外面使用函数调用MyClass:f 。就函数 f 是类 MyClass 的()。A. 静态成员函数B. 非静态成员函数C. 友元函数D. 前面都不正确10由于常对象不能被更新,因此()。A )通过常对象只能调用它的常成员函数可编辑资料 - - - 欢迎下载精品名师归纳总结B)通过常对象只能调用静态成员函数C)常对象的成员都是常成员D)通过常对象可以调用任何不转变对象值的成员函数二、填空题(本大题共5 小题,每道题 2 分,共 10 分)不写解答过程,将正确的答案写在每道题的空格内。错填或不填均无分。1. 对于派生类的构造函数,在定义对象时构造函数的执行次序为:先执行调用 的构造函数,再执行调用子对象类的构造函数,最终执行派生类的构造函数体中的内容。2. 声明类模板应使用关键字()。3. 重载的关系运算符和规律运算符的返回类型应当是()。4. 在面对对象方法中,类的实例称为()。5. 在类的对象被释放时,()函数会被自动调用。三、完成程序填题(本大题共3 个小题,每道题3 分,共 9 分)下面程序都留有空白,请将程序补充完整,1. 请完成下面的程序#include <iostream>/ 预处理命令using namespace std。/ 使用标准命名空间 std/ 测试静态成员类class Testprivate:int a。/ 数据成员可编辑资料 - - - 欢迎下载精品名师归纳总结public: 。Testint x = 0:1/ 构造函数void Show cout << "a:" << a << endl。 / 显示数据成员之值可编辑资料 - - - 欢迎下载精品名师归纳总结int mainvoid/ 主函数 mainvoidTest obj168。/ 定义对象obj.Show 。/ 显示数据成员之值return 0。/ 返回值 0, 返回操作系统2. 请完成下面的程序#include <iostream>/ 预处理命令using namespace std。/ 使用标准命名空间 std/ 整数类可编辑资料 - - - 欢迎下载精品名师归纳总结class Integerprivate:int a。/ 数据成员public:Integerint x = 0 a = x 。 / 构造函数可编辑资料 - - - 欢迎下载精品名师归纳总结为整型 mainvoid象示整数2 return a 。 / 类型转换函数 将类类型转换 。int mainvoid/主 函 数Integer a = 6。/ 定义整数对cout << a << endl 。/ 显可编辑资料 - - - 欢迎下载精品名师归纳总结return 0。/ 返回值 0, 返回操作系统3. 请完成下面的程序#include <iostream>/ 预处理命令using namespace std。/ 使用标准命名空间 std/ 复数类class Complexprivate:double realPart。/ 实部double imagePart。/ 虚部可编辑资料 - - - 欢迎下载精品名师归纳总结造函数public:Complexdouble real = 0, double image = 0: realPartreal, imagePartimage / 构double GetRealPart const return realPart 。 / 返回实部double GetImagePart const return imagePart 。 / 返回虚部Complex operator+const Complex &a const/ 重载加法运算符 +可编辑资料 - - - 欢迎下载精品名师归纳总结return Complex3 。/ 返回和可编辑资料 - - - 欢迎下载精品名师归纳总结 。可编辑资料 - - - 欢迎下载精品名师归纳总结mainvoid数加法运算int mainvoid/主 函 数Complex a1, 2, b2, 6, c 。/ 定义复数对象c = a + b。/ 复cout << "a=" << a.GetRealPart << "+" << a.GetImagePart << "i" << endl 。 / 显示 a cout << "b=" << b.GetRealPart << "+" << b.GetImagePart << "i" << endl 。 / 显示 b cout << "c=" << c.GetRealPart << "+" << c.GetImagePart << "i" << endl 。 / 显示 c可编辑资料 - - - 欢迎下载精品名师归纳总结return 0。/ 返回值 0, 返回操作系统四、程序分析题(本大题共4 小题,每道题 5 分,共 20 分)给出下面各程序的输出结果。1. 阅读下面程序,写出输出结果。#include <iostream>/ 预处理命令using namespace std。/ 使用标准命名空间 std可编辑资料 - - - 欢迎下载精品名师归纳总结class Apublic: 。virtual void Show const cout << "Class A" << endl 。 可编辑资料 - - - 欢迎下载精品名师归纳总结class B: public Apublic:void Show const cout << "Class B" << endl 。 。void Showconst A & obj obj.Show 。 int mainvoidA a。 B b 。 Showa。 Showb 。A *p 。可编辑资料 - - - 欢迎下载精品名师归纳总结p = &a 。 p->Show。p = &b 。 p->Show。B *q 。q = &b 。 q->Show。return 0。/ 返回值 0,返回操作系统上面程序的输出结果为:2. 阅读下面程序,写出输出结果。#include <iostream>/ 预处理命令using namespace std。/ 使用标准命名空间 stdtemplate <class ElemType> void ShowElemType a, int nfor int i = 0 。 i < n 。 i+ cout << ai << " " 。 int mainvoidint a = 1, 6, 9 。Showa, sizeofa / sizeofint 。Showa, 2。cout << endl 。return 0。/ 返回值 0, 返回操作系统上面程序的输出结果为:3. 阅读下面程序,写出输出结果。#include <iostream>/ 预处理命令可编辑资料 - - - 欢迎下载精品名师归纳总结using namespace std。/ 使用标准命名空间 stdclass MyClasspublic:MyClass count+ 。 MyClasscount-。 static int GetCount return count 。 可编辑资料 - - - 欢迎下载精品名师归纳总结private: 。static int count 。可编辑资料 - - - 欢迎下载精品名师归纳总结int MyClass:count = 0 。/ 初始化静态数据成员int mainvoidMyClass obj1 。cout << MyClass:GetCount << endl 。MyClass obj2 。cout << MyClass:GetCount << endl 。MyClass obj3 。cout << obj1.GetCount << endl 。MyClass *p = new MyClass 。cout << MyClass:GetCount << endl 。delete p。cout << MyClass:GetCount << endl 。return 0。/ 返回值 0, 返回操作系统上面程序的输出结果为:4. 阅读下面程序,写出输出结果。#include <iostream>/ 预处理命令using namespace std。/ 使用标准命名空间 stdclass Apublic:A cout << "A" << endl。 A cout << "A" << endl。 可编辑资料 - - - 欢迎下载精品名师归纳总结virtual void f cout << "A:f" << endl。 。class B: public Apublic:B cout << "B" << endl。 B cout << "B" << endl。 void f cout << "B:f" << endl。 。int mainvoidB obj 。A *p = &obj 。p->f 。return 0。/ 返回值 0, 返回操作系统上面程序的输出结果为: 六、编程题(本大题26 分)编写程序,定义抽象基类Shape形状 ,由它派生出 3 个派生类 : Circle 圆形 、Rectangle 矩形 和 Square 正方形 ,用函数函数ShowArea 分别显示各种图形的面积,最终仍要显示全部图形的总面积。C+ 面对对象程序设计模拟试卷四参考答巡查一、单项选择题(本大题共10 小题,每道题 2 分,共 20 分)在每道题列出的四个备选项中,只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多项或未选均无分。1 C2 C3 C4A5. C6 A7 B8 D9A10 A二、填空题(本大题共5 小题,每道题 2 分,共 10 分)不写解答过程,将正确的答案写在每道题的空格内。错填或不填均无分。1参考答案:基类 2参考答案: template 3参考答案: bool 或布尔型4. 参考答案:对象可编辑资料 - - - 欢迎下载精品名师归纳总结5. 参考答案:析构函数三、完成程序填题(本大题共3 个小题,每道题3 分,共 9 分)下面程序都留有空白,请将程序补充完整,1参考答案: 1ax 2参考答案: 2operator int3参考答案: 3 realPart + a.realPart, imagePart + a.imagePart 或 this->realPart +a.realPart, this->imagePart + a.imagePart四、程序分析题(本大题共4 小题,每道题 5 分,共 20 分)给出下面各程序的输出结果。1. 参考答案: Class AClass B Class A Class B Class B2. 参考答案:1 6 9 1 63. 参考答案:123434. 参考答案: AB B:fBA六、编程题(本大题26 分) 参考程序:#include <iostream>/ 预处理命令using namespace std。/ 使用标准命名空间stdconst double PI = 3.1415926。/ 定义常量 PIclass Shapepublic:Shape / 构造函数virtual Shape / 析构函数virtual ShowArea = 0 。/ 显示面积可编辑资料 - - - 欢迎下载精品名师归纳总结static double totalArea 。/ 总面积static void ShowTotalArea cout << " 总面积 :" << totalArea << endl 。 。class Circle: public Shapeprivate:double radius。/ 半径可编辑资料 - - - 欢迎下载精品名师归纳总结造函数public: 。Circledouble r: radiusr totalArea += PI * r * r。 / 构Circle / 析构函数virtual ShowArea cout << " 圆面积 :" << PI * radius * radius << endl 。 。 / 显示面积可编辑资料 - - - 欢迎下载精品名师归纳总结class Rectangle: public Shapeprivate:double length 。/ 长double width 。/ 宽可编辑资料 - - - 欢迎下载精品名师归纳总结public: 。Rectangledouble l, double w: lengthl, widthw totalArea += l * w。 / 构造函数Rectangle / 析构函数virtual ShowArea cout << " 矩形面积 :" << length * width << endl。 。/ 显示面积可编辑资料 - - - 欢迎下载精品名师归纳总结class Square: public Shapeprivate:double length 。/ 边长可编辑资料 - - - 欢迎下载精品名师归纳总结public: 。Squaredouble l: lengthl totalArea += l * l。 / 构造函数Square / 析构函数virtual ShowArea cout << " 正方形面积 :" << length * length << endl 。 。/ 显示面积可编辑资料 - - - 欢迎下载精品名师归纳总结double Shape:totalArea = 0 。/ 初始化 totalAreaint mainvoid可编辑资料 - - - 欢迎下载精品名师归纳总结Circle c1 。/ 定义圆对象c.ShowArea 。/ 显示面积Rectangle r1, 2 。/ 定义矩形对象r.ShowArea。/ 显示面积Square z3。/ 定义正方形对象z.ShowArea 。/ 显示面积Shape:ShowTotalArea。/ 显示总面积return 0。/ 返回值 0, 返回操作系统可编辑资料 - - - 欢迎下载