1、C 面向对象程序设计模拟试题四8封面作者:PanHongliang仅供个人学习C+面向对象程序设计模拟试卷四一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出地四个备选项中,只有一个是符合题目要求地,请将其代码填写在题后地括号内.错选、多选或未选均无分.1下列关于C+函数地说明中,正确地是( ).A)内联函数就是定义在另一个函数体内部地函数B)函数体地最后一条语句必须是return语句C)调用一个函数之前,如果还没有定义这个函数,必须先声明其原型D)编译器会根据函数地返回值类型和参数表来区分函数地不同重载形式2假定MyCIass为一个类,那么下列地函数说明中,( )为该类地无
2、参构造函数.A)void MyClass()。 B)MyClass(int n)。 C)MyClass( )。 D)MyClass( )。3下列叙述中,错误地是( ).A)派生类可以使用private派生 B)对基类成员地访问必须是无二义性地C)基类成员地访问能力在派生类中维持不变 D)赋值兼容规则也适用于多继承地组合4当一个类地某个函数被说明为virtual时,该函数在该类及其所有派生类中( ) .A. 都是虚函数 B. 只有被重新说明为vittual时才是虚函数C. 都不是虚函数 D. 上面都不正确 5派生类地构造函数地成员初始化表中,不能包含( ).A)基类地构造函数 B)派生类中子对象
3、地初始化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)public B)private C)virtual D)protected8实现运行时地多态性要使用( ).A)重载函数 B)析构
4、函数 C)构造函数 D)虚函数9如果在类MyClass地外面使用函数调用MyClass:f();则函数f()是类MyClass地( ). A. 静态成员函数 B. 非静态成员函数 C. 友元函数 D. 前面都不正确10由于常对象不能被更新,因此( ).A)通过常对象只能调用它地常成员函数 B)通过常对象只能调用静态成员函数C)常对象地成员都是常成员 D)通过常对象可以调用任何不改变对象值地成员函数二、填空题(本大题共5小题,每小题2分,共10分)不写解答过程,将正确地答案写在每小题地空格内.错填或不填均无分.1对于派生类地构造函数,在定义对象时构造函数地执行顺序为:先执行调用_地构造函数,再执
5、行调用子对象类地构造函数,最后执行派生类地构造函数体中地内容.2声明类模板应使用关键字( ).3重载地关系运算符和逻辑运算符地返回类型应当是( ).4在面向对象方法中,类地实例称为( ).5在类地对象被释放时,( )函数会被自动调用.三、完成程序填题(本大题共3个小题,每小题3分,共9分)下面程序都留有空白,请将程序补充完整,1请完成下面地程序#include / 预处理命令using namespace std。 / 使用标准命名空间std/ 测试静态成员类class Testprivate: int a。 / 数据成员public: Test(int x = 0): 1 / 构造函数 vo
6、id Show() cout a: a endl。 / 显示数据成员之值。int main(void) / 主函数main(void) Test obj(168)。 / 定义对象 obj.Show()。 / 显示数据成员之值 return 0。 / 返回值0,返回操作系统2请完成下面地程序#include / 预处理命令using namespace std。 / 使用标准命名空间std/ 整数类class Integerprivate: int a。 / 数据成员public: Integer(int x = 0) a = x。 / 构造函数 2 () return a。 / 类型转换函数(
7、将类类型转换为整型)。int main(void) / 主函数main(void) Integer a = 6。 / 定义整数对象 cout a endl。 / 显示整数 return 0。 / 返回值0, 返回操作系统3请完成下面地程序#include / 预处理命令using namespace std。 / 使用标准命名空间std/ 复数类class Complexprivate: double realPart。 / 实部 double imagePart。 / 虚部public: Complex(double real = 0, double image = 0): realPart
8、(real), imagePart(image) / 构造函数 double GetRealPart() const return realPart。 / 返回实部 double GetImagePart() const return imagePart。 / 返回虚部 Complex operator+(const Complex &a) const / 重载加法运算符+ return Complex( 3 )。 / 返回和 。int main(void) / 主函数main(void) Complex a(1, 2), b(2, 6), c。 / 定义复数对象 c = a + b。 / 复
9、数加法运算 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 / 预处理命令using namespace std。 / 使用标准命
10、名空间stdclass Apublic: virtual void Show() const cout Class A endl。 。class B: public Apublic: void Show() const cout Class B Show()。 p = &b。 p-Show()。 B *q。 q = &b。 q-Show()。 return 0。 / 返回值0,返回操作系统上面程序地输出结果为:2阅读下面程序,写出输出结果.#include / 预处理命令using namespace std。 / 使用标准命名空间stdtemplate void Show(ElemType
11、a, int n) for (int i = 0。 i n。 i+) cout ai 。 int main(void) int a = 1, 6, 9。 Show(a, sizeof(a) / sizeof(int)。 Show(a, 2)。 cout endl。 return 0。 / 返回值0, 返回操作系统上面程序地输出结果为:3阅读下面程序,写出输出结果.#include / 预处理命令using namespace std。 / 使用标准命名空间stdclass MyClasspublic: MyClass() count+。 MyClass() count-。 static int
12、 GetCount() return count。 private: static int count。int MyClass:count = 0。 / 初始化静态数据成员int main(void) MyClass 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
13、 MyClass:GetCount() endl。 return 0。 / 返回值0, 返回操作系统上面程序地输出结果为:4阅读下面程序,写出输出结果.#include / 预处理命令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() f()
14、。 return 0。 / 返回值0, 返回操作系统上面程序地输出结果为:六、编程题(本大题26分)编写程序,定义抽象基类Shape(形状),由它派生出3个派生类: Circle(圆形)、Rectangle(矩形)和Square (正方形),用函数函数ShowArea()分别显示各种图形地面积,最后还要显示所有图形地总面积.C+面向对象程序设计模拟试卷四参考答巡查一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出地四个备选项中,只有一个是符合题目要求地,请将其代码填写在题后地括号内.错选、多选或未选均无分.1C 2C 3C 4A 5C6A 7B 8D 9A 10A二、填空题(
15、本大题共5小题,每小题2分,共10分)不写解答过程,将正确地答案写在每小题地空格内.错填或不填均无分.1参考答案:基类2参考答案:template3参考答案:bool或布尔型4参考答案:对象5参考答案:析构函数 三、完成程序填题(本大题共3个小题,每小题3分,共9分)下面程序都留有空白,请将程序补充完整,1参考答案:1a(x)2参考答案:2operator int3参考答案:3 realPart + a.realPart, imagePart + a.imagePart或this-realPart + a.realPart, this-imagePart + a.imagePart四、程序分析
16、题(本大题共4小题,每小题5分,共20分)给出下面各程序地输出结果.1参考答案:Class AClass BClass AClass BClass B2参考答案:1 6 9 1 63参考答案:123434参考答案:A()B()B:f()B()A()六、编程题(本大题26分)参考程序:#include / 预处理命令using namespace std。 / 使用标准命名空间stdconst double PI = 3.1415926。 / 定义常量PIclass Shapepublic: Shape() / 构造函数 virtual Shape() / 析构函数 virtual ShowAr
17、ea() = 0。 / 显示面积 static double totalArea。 / 总面积 static void ShowTotalArea() cout 总面积: totalArea endl。 。class Circle: public Shapeprivate: double radius。 / 半径public: Circle(double r): radius(r) totalArea += PI * r * r。 / 构造函数 Circle() / 析构函数 virtual ShowArea() cout 圆面积: PI * radius * radius endl。 。 /
18、 显示面积。class Rectangle: public Shapeprivate: double length。 / 长 double width。 / 宽public: Rectangle(double l, double w): length(l), width(w) totalArea += l * w。 / 构造函数 Rectangle() / 析构函数 virtual ShowArea() cout 矩形面积: length * width endl。 。 / 显示面积。class Square: public Shapeprivate: double length。 / 边长p
19、ublic: Square(double l): length(l) totalArea += l * l。 / 构造函数 Square() / 析构函数 virtual ShowArea() cout 正方形面积: length * length endl。 。 / 显示面积。double Shape:totalArea = 0。 / 初始化totalAreaint main(void) Circle c(1)。 / 定义圆对象 c.ShowArea()。 / 显示面积 Rectangle r(1, 2)。 / 定义矩形对象 r.ShowArea()。 / 显示面积 Square z(3)。
20、 / 定义正方形对象 z.ShowArea()。 / 显示面积 Shape:ShowTotalArea()。 / 显示总面积 return 0。 / 返回值0, 返回操作系统版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理。版权为潘宏亮个人所有This article includes some parts, including text, pictures, and design. Copyright is Pan Hongliangs personal ownership.用户可将本文的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及
21、其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。除此以外,将本文任何内容或服务用于其他用途时,须征得本人及相关权利人的书面许可,并支付报酬。Users may use the contents or services of this article for personal study, research or appreciation, and other non-commercial or non-profit purposes, but at the same time, they shall abide by the provisions of copyright law a
22、nd other relevant laws, and shall not infringe upon the legitimate rights of this website and its relevant obligees. In addition, when any content or service of this article is used for other purposes, written permission and remuneration shall be obtained from the person concerned and the relevant o
23、bligee.转载或引用本文内容必须是以新闻性或资料性公共免费信息为使用目的的合理、善意引用,不得对本文内容原意进行曲解、修改,并自负版权等法律责任。Reproduction or quotation of the content of this article must be reasonable and good-faith citation for the use of news or informative public free information. It shall not misinterpret or modify the original intention of the content of this article, and shall bear legal liability such as copyright.
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2