1、C+面向对象程序设计模拟试题四一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中,只有一个是符合题目规定的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1下列关于C+函数的说明中,对的的是( )。A)内联函数就是定义在另一个函数体内部的函数B)函数体的最后一条语句必须是return语句C)调用一个函数之前,假如还没有定义这个函数,必须先声明其原型D)编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式2假定MyCIass为一个类,那么下列的函数说明中,( )为该类的无参构造函数。A)void MyClass();B)MyClass(int n)
2、;C)MyClass( );D)MyClass( );3下列叙述中,错误的是( )。A)派生类可以使用private派生B)对基类成员的访问必须是无二义性的C)基类成员的访问能力在派生类中维持不变D)赋值兼容规则也合用于多继承的组合4当一个类的某个函数被说明为virtual时,该函数在该类及其所有派生类中( ) 。A. 都是虚函数B. 只有被重新说明为vittual时才是虚函数C. 都不是虚函数 D. 上面都不对的 5派生类的构造函数的成员初始化表中,不能包含( )。A)基类的构造函数B)派生类中子对象的初始化C)基类中子对象的初始化D)派生类中一般数据成员的初始化6下列是重载加法运算符的函数
3、原型声明,其中错误的是( )。A)MyClass operator+(double,double);B)MyClass operator+(double,MyClass);C)MyClass operator+(MyClass,double);D)MyClass operator+(MyClass,MyClass);7派生类中的成员不能直接访问基类中的( )成员。A)publicB)privateC)virtualD)protected8实现运营时的多态性要使用( )。A)重载函数B)析构函数C)构造函数D)虚函数9假如在类MyClass的外面使用函数调用MyClass:f();则函数f()是
4、类MyClass的( )。A. 静态成员函数B. 非静态成员函数C. 友元函数D. 前面都不对的10由于常对象不能被更新,因此( )。A)通过常对象只能调用它的常成员函数B)通过常对象只能调用静态成员函数C)常对象的成员都是常成员D)通过常对象可以调用任何不改变对象值的成员函数二、填空题(本大题共5小题,每小题2分,共10分)不写解答过程,将对的的答案写在每小题的空格内。错填或不填均无分。1对于派生类的构造函数,在定义对象时构造函数的执行顺序为:先执行调用_的构造函数,再执行调用子对象类的构造函数,最后执行派生类的构造函数体中的内容。2声明类模板应使用关键字( )。3重载的关系运算符和逻辑运算
5、符的返回类型应当是( )。4在面向对象方法中,类的实例称为( )。5在类的对象被释放时,( )函数会被自动调用。三、完毕程序填题(本大题共3个小题,每小题3分,共9分)下面程序都留有空白,请将程序补充完整, 1请完毕下面的程序#include / 预解决命令using namespace std;/ 使用标准命名空间std/ 测试静态成员类class Testprivate:int a;/ 数据成员public:Test(int x = 0): 1 / 构造函数void Show() cout a: a endl; / 显示数据成员之值;int main(void)/ 主函数main(void
6、)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; / 类型转换函数(将类类型转换为整型);int main(void)/ 主函数main(void)Integer a = 6;/ 定义整数对象cout a endl;/
7、 显示整数return 0; / 返回值0, 返回操作系统3请完毕下面的程序#include / 预解决命令using namespace std;/ 使用标准命名空间std/ 复数类class Complexprivate:double realPart;/ 实部double imagePart;/ 虚部public:Complex(double real = 0, double image = 0): realPart(real), imagePart(image) / 构造函数double GetRealPart() const return realPart; / 返回实部double
8、 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;/ 复数加法运算cout a= a.GetRealPart() + a.GetImagePart() i endl;/ 显示acout b= b.GetRealPart() + b.GetImagePar
9、t() i endl;/ 显示bcout c= c.GetRealPart() + c.GetImagePart() i endl;/ 显示creturn 0; / 返回值0, 返回操作系统四、程序分析题(本大题共4小题,每小题5分,共20分)给出下面各程序的输出结果。1阅读下面程序,写出输出结果。#include / 预解决命令using namespace std;/ 使用标准命名空间stdclass Apublic:virtual void Show() const cout Class A endl; ;class B: public Apublic:void Show() const
10、 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 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)
11、;cout endl;return 0; / 返回值0, 返回操作系统上面程序的输出结果为:3阅读下面程序,写出输出结果。#include / 预解决命令using namespace std;/ 使用标准命名空间stdclass MyClasspublic:MyClass() count+; MyClass()count-; static int GetCount() return count; private:static int count;int MyClass:count = 0;/ 初始化静态数据成员int main(void)MyClass obj1;cout MyClass:G
12、etCount() 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 / 预解决命令using namespace std;/ 使用标准命名空间stdclass Apublic
13、: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();return 0; / 返回值0, 返回操作系统上面程序的输出结果为:六、编程题(本大题26分)编写程序,定义抽象基类Shape(形状),由它派生出3个派生类: Circle(圆形)、Rectangle(矩形)和Square (正方形),用函数函数ShowArea()分别显示各种
14、图形的面积,最后还要显示所有图形的总面积。C+面向对象程序设计模拟试题四参考答巡查一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中,只有一个是符合题目规定的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1C2C3C4A5C6A7B8D9A10A二、填空题(本大题共5小题,每小题2分,共10分)不写解答过程,将对的的答案写在每小题的空格内。错填或不填均无分。1参考答案:基类2参考答案:template3参考答案:bool或布尔型4参考答案:对象5参考答案:析构函数 三、完毕程序填题(本大题共3个小题,每小题3分,共9分)下面程序都留有空白,请将程序补充
15、完整, 1参考答案:1a(x)2参考答案:2operator int3参考答案:3 realPart + a.realPart, imagePart + a.imagePart或this-realPart + a.realPart, this-imagePart + a.imagePart四、程序分析题(本大题共4小题,每小题5分,共20分)给出下面各程序的输出结果。1参考答案:Class AClass BClass AClass BClass B2参考答案:1 6 9 1 63参考答案:123434参考答案:A()B()B:f()B()A()六、编程题(本大题26分)参考程序:#includ
16、e / 预解决命令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;/ 半径pub
17、lic:Circle(double r): radius(r) totalArea += PI * r * r; / 构造函数Circle() / 析构函数virtual ShowArea() cout 圆面积: PI * radius * radius endl; ;/ 显示面积;class Rectangle: public Shapeprivate:double length;/ 长double width;/ 宽public:Rectangle(double l, double w): length(l), width(w) totalArea += l * w; / 构造函数Rect
18、angle() / 析构函数virtual ShowArea() cout 矩形面积: length * width endl; ;/ 显示面积;class Square: public Shapeprivate:double length;/ 边长public: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);/ 定义正方形对象z.ShowArea();/ 显示面积Shape:ShowTotalArea();/ 显示总面积return 0; / 返回值0, 返回操作系统