C面向对象程序设计模拟试 .docx
精品名师归纳总结C+ 面对对象程序设计模拟试卷三一、单项选择题(本大题共10 小题,每道题 2 分,共 20 分)在每道题列出的四个备选项中,只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多项或未选均无分。1. 下面有关重载函数的描述中,正确选项()。A)重载函数必需具有不同的返回值类型B)重载函数形参个数必需不同C)重载函数必需具有不同的形参表D)重载函数名可以不同2. 假定 MyCIass 为一个类,那么以下的函数说明中,()为该类的析构函数。A)voidMyClass。B)MyClassint n 。C)MyClass 。D)MyClass 。3()是以一种完全通用的方法来设计函数或类而不必预先说明将被使用的每个对象的类型。A)模板B)类C)对象D)函数4. 下面关于静态成员函数的途术中错语的是()。A. 静态成员函数可以有返回值 B. this 指针可以指向静态成员函数C. 静态成员函数可以具有指针参数D. 静态成员函数可有具有返回值类型5. 定义类模板时要使用关键字()。A. privateB. publicC. deleteD. template 6以下是重载乘法运算符的函数原型声明,其中错误选项()。A)MyClass operator*double,double。 B)MyClassoperator*double,MyClass。C)MyClass operator*MyClass,double。D)MyClass operator*MyClass,MyClass。7. 以下()成员函数表示纯虚函数。A)virtual int funintB)voidfunint=0C)virtual void fun=0D)virtual void funint8. 关于纯虚函数,以下表述中正确选项()。A)纯虚函数的声明总是以 "=0" 终止B)含有纯虚函数的类可以定义对象C)含有纯虚函数的类是抽象类D)上面都是错误的9()解决二义性问题。A. 只能使用作用域辨论操作符B. 只能使用虚基类C. 使用作用域辨论操作符或虚基类10实现编译时的多态性要使用()。D. 上面都不能可编辑资料 - - - 欢迎下载精品名师归纳总结A)重载函数B)析构函数C)构造函数D)虚函数二、填空题(本大题共 5 小题,每道题 2 分,共 10 分)不写解答过程,将正确的答案写在每道题的空格内。错填或不填均无分。1. 定义一个函数名为 fun,返回值为 int,没有参数的纯虚函数的声明是()。2. 定义静态成员函数应使用关键字()。3. 在 C+ 中,假如类的名称是 CTest,就此类的构造函数名称为()。4. 在类的对象被创建时,()函数会被自动调用。5. 类中数据成员和成员函数的默认拜望级别为()。三、完成程序填题(本大题共3 个小题,每道题 3 分,共 9 分)下面程序都留有空白,请将程序补充完整,1. 请完成下面的程序#include <iostream>/ 预处理命令using namespace st。d/ 使用标准命名空间 std/ 测试静态成员类class Testprivate:1 int count。/ 对象数public:Test count+。 / 构造函数 , 实现对对象进行计数static void Show cout << " 共有" << count << " 个对象." << endl 。 / 显示对象数 。int Test:count = 0。/ 初始化静态数据成员赋初值int mainvoid/ 主函数 mainvoidTest obj1, obj2, obj3。/ 定义对象Test:Show。/ 显示对象数return 0。/ 返回值 0,返回操作系统2. 请完成下面的程序#include <iostream>/ 预 处理命令using namespace st。d/可编辑资料 - - - 欢迎下载精品名师归纳总结使用标准命名空间 std/ 整数类class Integerprivate:int a。/数据成员可编辑资料 - - - 欢迎下载精品名师归纳总结数换函数符+public:Integerint x = 0 a = x 。 / 构 造函operator int return a。 / 类 型转Integer operator+const Integer &i const/ 重载加法运算return2。/ 返回和可编辑资料 - - - 欢迎下载精品名师归纳总结 。int mainvoid/主函数 mainvoid可编辑资料 - - - 欢迎下载精品名师归纳总结数对象求和操作系统Integer a2, b3, c。/ 定 义整c = a + b。/cout << c << endl。/ 显 示和return 0。/ 返回值 0, 返回可编辑资料 - - - 欢迎下载精品名师归纳总结3. 请完成下面的程序#include <iostream>/ 预 处理命令using namespace st。d/使用标准命名空间 stdtemplate <class ElemType> class Aprivate:可编辑资料 - - - 欢迎下载精品名师归纳总结ElemType a。/ 数 据成员public:AElemType x: ax /构 造函数void Show const cout << a << endl。 显示 a 之值/ 。int mainvoid/主函数 mainvoid可编辑资料 - - - 欢迎下载精品名师归纳总结关信息A<3> obj"Hello, world."。/ 定义对象obj.Show。/ 显 示相可编辑资料 - - - 欢迎下载精品名师归纳总结return 0。/返回值 0, 返回操作系统四、程序分析题(本大题共 4 小题,每道题 5 分,共 20 分)给出下面各程序的输出结果。1阅读下面程序,写出输出结果。#include <iostream>/ 预处理命令using namespace st。d/ 使用标准命名空间 stdclass Pointprivate:int x。/ x 坐标int y。/ y 坐标public:Pointint a = 0, int b = 0:xa, yb int GetX const return x 。 int GetY const return y。 void SetXint a x = a 。 void SetYint b y = b 。 。int mainvoid可编辑资料 - - - 欢迎下载精品名师归纳总结Point obj1。const Point obj29, 98。cout << obj1.GetX << endl。obj1.SetX5。cout << obj1.GetX << endl。obj1.SetY18。cout << obj1.GetY << endl。cout << obj2.GetX << endl。cout << obj2.GetY << endl。return 0。/ 返回值 0,返回操作系统上面程序的输出结果为:1. 参考答案:05189982. 阅读下面程序,写出输出结果。#include <iostream>/ 预 处理命令using namespace st。d/使用标准命名空间 stdclass Arrayprivate:int *elem 。/数组元素储备空间int size。/数组元素个数可编辑资料 - - - 欢迎下载精品名师归纳总结符public:Arrayint a, int sz: elema, sizesz / 构造函数int GetSize return size。 int &operatorint pos return elempos - 1 。 / 重载下标运算可编辑资料 - - - 欢迎下载精品名师归纳总结 。int mainvoidint a = 1, 2, 3, 4, 5 。Array obja, 5。obj1 = 8 。for int i = 1 。 i <= obj.GetSize。 i+/ 依 次输出数组各元素之值cout << obji << " " 。cout << endl。return 0。/ 返回值 0, 返回操作系统上面程序的输出结果为:3. 阅读下面程序,写出输出结果。#include <iostream>/ 预处理命令可编辑资料 - - - 欢迎下载精品名师归纳总结using namespace st。d准命名空间 std/ 使 用标可编辑资料 - - - 欢迎下载精品名师归纳总结class Apublic:A cout << " 构造 A" << endl 。 / 构造函数A cout << " 析构 A" << endl 。 / 析构函数 。class B: public Apublic:B cout << " 构造 B" << endl。 / 构造函数B cout << " 析构 B" << endl。 / 析构函数可编辑资料 - - - 欢迎下载精品名师归纳总结 。int mainvoidB obj。A *p = new A。return 0。/ 返回值 0, 返回操作系统上面程序的输出结果为:4. 阅读下面程序,写出输出结果。#include <iostream>/ 预处理命令可编辑资料 - - - 欢迎下载精品名师归纳总结空间 stdusing namespace st。d/ 使用标准命名可编辑资料 - - - 欢迎下载精品名师归纳总结template <class ElemType> ElemType fElemType xreturn x * ElemType5.1。template <class ElemType> void fElemType x, ElemType yx = x * 1.1 。y = y * 1.1 。cout << x << endl。cout << y << endl。int mainvoidcout << f3.0 << endl。f1, 2。f1.0, 2.0。system"PAUSE"。/ 调用库函数 system , 输出系可编辑资料 - - - 欢迎下载精品名师归纳总结统提示信息return 0。/ 返回值 0, 返回操作系统可编辑资料 - - - 欢迎下载精品名师归纳总结上面程序的输出结果为:五、程序改错题(本大题共 3 小题,每道题 5 分,共 15 分)指出下面程序中的错误,说明错误缘由,并加以改正。1. 下面程序中类的定义中有一处错误,请指出出错的行,说明错误缘由, 并加以改正。#include <iostream>可编辑资料 - - - 欢迎下载精品名师归纳总结using namespace st。dclass Apublic:/1/2/3/4/5/6可编辑资料 - - - 欢迎下载精品名师归纳总结Aint x = 0, int y = 0: a = x, b = y /7可编辑资料 - - - 欢迎下载精品名师归纳总结void Show/8/9可编辑资料 - - - 欢迎下载精品名师归纳总结cout << a << " " << b << endl。/10/11可编辑资料 - - - 欢迎下载精品名师归纳总结private:int a, b。 。/12/13/14/15可编辑资料 - - - 欢迎下载精品名师归纳总结int mainvoidA obj18。obj.Show。/20/16/17/18/19可编辑资料 - - - 欢迎下载精品名师归纳总结可编辑资料 - - - 欢迎下载精品名师归纳总结return 0。/21/22/23可编辑资料 - - - 欢迎下载精品名师归纳总结2. 下面程序中类的定义中有一处错误,请指出出错的行,说明错误缘由, 并加以改正。#include <iostream>/ 预处理命令/1可编辑资料 - - - 欢迎下载精品名师归纳总结using namespace st。d空间 std/2/ 使用标准命名可编辑资料 - - - 欢迎下载精品名师归纳总结可编辑资料 - - - 欢迎下载精品名师归纳总结template <class ElemType>/4/3可编辑资料 - - - 欢迎下载精品名师归纳总结ElemType MaxElemType a, ElemType b/5可编辑资料 - - - 欢迎下载精品名师归纳总结return a > b . a : b。/5/6/6可编辑资料 - - - 欢迎下载精品名师归纳总结可编辑资料 - - - 欢迎下载精品名师归纳总结int mainvoid/8/7/9可编辑资料 - - - 欢迎下载精品名师归纳总结cout << Max16.8, 518 << endl。/10可编辑资料 - - - 欢迎下载精品名师归纳总结/11return 0。/ 返回值 0, 返回操作系统/12/133. 下面程序中类的定义中有一处错误,请指出出错的行,说明错误缘由, 并加以改正。#include <iostream>/1可编辑资料 - - - 欢迎下载精品名师归纳总结using namespace st。d/3class Integer/2可编辑资料 - - - 欢迎下载精品名师归纳总结public:/4/5/6可编辑资料 - - - 欢迎下载精品名师归纳总结/8Integerint a = 0: ia /7可编辑资料 - - - 欢迎下载精品名师归纳总结int operator int/9/10可编辑资料 - - - 欢迎下载精品名师归纳总结/13return i。/11/12可编辑资料 - - - 欢迎下载精品名师归纳总结private:int i。 。/17int mainvoid/14/15/16/18/19可编辑资料 - - - 欢迎下载精品名师归纳总结/22Integer obj168。cout << obj << endl。/21/20可编辑资料 - - - 欢迎下载精品名师归纳总结return 0。/23/24可编辑资料 - - - 欢迎下载精品名师归纳总结六、编程题(本大题 26 分)编写程序,定义抽象基类Shape形状,由它派生出 2 个派生类: Circle圆形 和 Rectangle矩形,用函数 Show分别显示各种图形的相关信息,最终仍要显示全部图形的总面积。C+ 面对对象程序设计模拟试卷三参考答安全一、单项选择题(本大题共10 小题,每道题 2 分,共 20 分)在每道题列出的四个备选项中,只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多项或未选均无分。1 C2D3A4 B 5D6 A7C8C9 C 10A二、填空题(本大题共 5 小题,每道题 2 分,共 10 分)不写解答过程,将正确的答案写在每道题的空格内。错填或不填均无分。1参考答案: int fun = 0 。2参考答案: static 3参考答案: CTest4. 参考答案:构造函数5. 参考答案: private 或私有三、完成程序填题(本大题共3 个小题,每道题 3 分,共 9 分)下面程序都留有空白,请将程序补充完整,1. 参考答案: 1static2. 参考答案: 2 a + i.a 或 this->a + i.a 3参考答案: 3 char *可编辑资料 - - - 欢迎下载精品名师归纳总结四、程序分析题(本大题共 4 小题,每道题 5 分,共 20 分)给出下面各程序的输出结果。1. 参考答案:05189982. 参考答案:8 2 3 4 53. 参考答案: 构造 A构造 B 构造 A 析构 B 析构 A4. 参考答案:15.3121.12.2五、程序改错题(本大题共 3 小题,每道题 5 分,共 15 分)指出下面程序中的错误,说明错误缘由,并加以改正。1. 参考答案:第 7 行“ a = x, b = y”有错,初始列表的格式错,应改为“ ax, by”。2. 参考答案:第 10 行有错,模板函数无隐式转换功能,函数调用Max16.8, 518无法确定参数类型,可第 11 行的“ Max16.8, 518”改为“ Max16.8, 518.0”。可编辑资料 - - - 欢迎下载精品名师归纳总结3. 参考答案:第 9 行“ int operator int”有错,类型转换函数不能有返回值类型,可改为“ operator int”。六、编程题(本大题 26 分) 参考程序:#include <iostream>/ 预处理命令可编辑资料 - - - 欢迎下载精品名师归纳总结using namespace st。d准命名空间 std/ 使 用标可编辑资料 - - - 欢迎下载精品名师归纳总结const double PI = 3.1415926。/ 定义常量 PI可编辑资料 - - - 欢迎下载精品名师归纳总结数endl。 class Shapepublic:Shape / 构 造函virtual Shape / 析构函数virtual Show = 0。/ 显示面积static double totalArea。/ 总面积static void ShowTotalArea cout << " 总面积 :" << totalArea <<可编辑资料 - - - 欢迎下载精品名师归纳总结 。class Circle: public Shapeprivate:double radius。/ 半径public:Circledouble r: radiusr totalArea += PI * r * r 。 / 构造函数Circle / 析构函数virtual Show cout << " 圆面积 :"<< PI * radius * radius << endl。 。/ 显示面积 。class Rectangle: public Shapeprivate:可编辑资料 - - - 欢迎下载精品名师归纳总结double length。/ 长double width。/ 宽public:Rectangledouble l, double w: lengthl, widthw totalArea+= l * w。 / 构造函数Rectangle / 析 构函数virtualShow cout <<" 矩 形 面 积 :"<<length *width<<endl。 。/ 显示面积 。double Shape:totalArea = 0。/ 初 始化totalAreaint mainvoidCircle c1。/ 定 义圆对象c.Show。/ 显 示面积Rectangle r1, 2。/ 定义矩形对象r.Show。/ 显 示面积Shape:ShowTotalArea。/ 显示总面积return 0。/ 返回值 0, 返回操作系统可编辑资料 - - - 欢迎下载