《2022年C面向对象程序设计模拟试题三 .pdf》由会员分享,可在线阅读,更多相关《2022年C面向对象程序设计模拟试题三 .pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、学而不思则惘,思而不学则殆C+ 面向对象程序设计模拟试题三一、单项选择题(本大题共10 小题,每小题2 分,共 20 分)在每小题列出的四个备选项中,只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1下面有关重载函数的描述中,正确的是() 。A)重载函数必须具有不同的返回值类型B)重载函数形参个数必须不同C)重载函数必须具有不同的形参表D)重载函数名可以不同2假定 MyCIass 为一个类,那么下列的函数说明中,()为该类的析构函数。A)voidMyClass(); B)MyClass(int n); C)MyClass( ); D)MyClass( ); 3
2、()是以一种完全通用的方法来设计函数或类而不必预先说明将被使用的每个对象的类型。A)模板B)类C)对象D)函数4下面关于静态成员函数的途术中错语的是() 。A. 静态成员函数可以有返回值B. this 指针可以指向静态成员函数C. 静态成员函数可以具有指针参数D. 静态成员函数可有具有返回值类型5定义类模板时要使用关键字() 。A. private B. public C. delete D. template 6下列是重载乘法运算符的函数原型声明,其中错误的是() 。A)MyClass operator*(double,double); B)MyClass operator*(double,
3、MyClass); C)MyClass operator*(MyClass,double); D)MyClass operator*(MyClass,MyClass); 7以下()成员函数表示纯虚函数。A)virtual int fun(int) B)void fun(int)=0 C)virtual void fun()=0 D)virtual void fun(int) 8关于纯虚函数,下列表述中正确的是() 。A)纯虚函数的声明总是以=0 结束B)含有纯虚函数的类可以定义对象C)含有纯虚函数的类是抽象类D)上面都是错误的9 ()解决二义性问题。A. 只能使用作用域分辨操作符B. 只能使用
4、虚基类C. 使用作用域分辨操作符或虚基类D. 上面都不能10实现编译时的多态性要使用() 。A)重载函数B)析构函数C)构造函数D)虚函数二、填空题(本大题共5 小题,每小题2 分,共 10 分)不写解答过程,将正确的答案写在每小题的空格内。错填或不填均无分。1定义一个函数名为fun,返回值为int ,没有参数的纯虚函数的声明是() 。2定义静态成员函数应使用关键字() 。3在 C+中,如果类的名称是CTest,则此类的构造函数名称为() 。4在类的对象被创建时,()函数会被自动调用。5类中数据成员和成员函数的默认访问级别为() 。名师归纳总结 精品学习资料 - - - - - - - - -
5、 - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 1 页,共 9 页 - - - - - - - - - 学而不思则惘,思而不学则殆三、完成程序填题(本大题共3 个小题,每小题3 分,共 9 分)下面程序都留有空白,请将程序补充完整,1请完成下面的程序#include / 预处理命令using namespace std; / 使用标准命名空间std / 测试静态成员类class Test private: 1 int count; / 对象数public: Test() count+; / 构造函数 , 实现对对象进行计数st
6、atic void Show() cout 共有 count 个对象 ! endl; / 显示对象数; int Test:count = 0; / 初始化静态数据成员赋初值int main(void) / 主函数 main(void) Test obj1, obj2, obj3; / 定义对象Test:Show(); / 显示对象数return 0; / 返回值 0,返回操作系统 2请完成下面的程序#include / 预处理命令using namespace std; / 使用标准命名空间std / 整数类class Integer private: int a; / 数据成员public:
7、 Integer(int x = 0) a = x; / 构造函数operator int() return a; / 类型转换函数Integer operator+(const Integer &i) const / 重载加法运算符+ return 2 ; / 返回和 ; 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 2 页,共 9 页 - - - - - - - - - 学而不思则惘,思而不学则殆int main(void) / 主函数 main(void)
8、Integer a(2), b(3), c; / 定义整数对象c = a + b; / 求和cout c endl; / 显示和return 0; / 返回值 0, 返回操作系统 3请完成下面的程序#include / 预处理命令using namespace std; / 使用标准命名空间std template class A private: ElemType a; / 数据成员public: A(ElemType x): a(x) / 构造函数void Show() const cout a endl; / 显示 a 之值; int main(void) / 主函数 main(void
9、) A obj(Hello, world!); / 定义对象obj.Show(); / 显示相关信息return 0; / 返回值 0, 返回操作系统 四、程序分析题(本大题共4 小题,每小题5 分,共 20 分)给出下面各程序的输出结果。1阅读下面程序,写出输出结果。#include / 预处理命令using namespace std; / 使用标准命名空间std class Point private: int x; / x 坐标int y; / y 坐标public: 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 -
10、- - - - - - - - - - - - - - 第 3 页,共 9 页 - - - - - - - - - 学而不思则惘,思而不学则殆Point(int a = 0, int b = 0):x(a), y(b) int GetX() const return x; int GetY() const return y; void SetX(int a) x = a; void SetY(int b) y = b; ; int main(void) Point obj1; const Point obj2(9, 98); cout obj1.GetX() endl; obj1.SetX(5
11、); cout obj1.GetX() endl; obj1.SetY(18); cout obj1.GetY() endl; cout obj2.GetX() endl; cout obj2.GetY() endl; return 0; / 返回值 0,返回操作系统 上面程序的输出结果为:2阅读下面程序,写出输出结果。#include / 预处理命令using namespace std; / 使用标准命名空间std class Array private: int *elem; / 数组元素存储空间int size; / 数组元素个数名师归纳总结 精品学习资料 - - - - - - -
12、- - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 4 页,共 9 页 - - - - - - - - - 学而不思则惘,思而不学则殆public: Array(int a, int sz): elem(a), size(sz) / 构造函数int GetSize() return size; int &operator(int pos) return elempos - 1; / 重载下标运算符 ; int main(void) int a = 1, 2, 3, 4, 5; Array obj(a, 5); obj1 =
13、8; for (int i = 1; i = obj.GetSize(); i+) / 依次输出数组各元素之值cout obji ; cout endl; return 0; / 返回值 0, 返回操作系统 上面程序的输出结果为:3阅读下面程序,写出输出结果。#include / 预处理命令using namespace std; / 使用标准命名空间std class A public: A() cout 构造 A endl; / 构造函数A() cout 析构 A endl; / 析构函数; class B: public A public: B() cout 构造 B endl; / 构
14、造函数B() cout 析构 B endl; / 析构函数; int main(void) 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 5 页,共 9 页 - - - - - - - - - 学而不思则惘,思而不学则殆B obj; A *p = new A; return 0; / 返回值 0, 返回操作系统 上面程序的输出结果为:4阅读下面程序,写出输出结果。#include / 预处理命令using namespace std; / 使用标准命名空间std
15、template ElemType f(ElemType x) return x * (ElemType)5.1; template void f(ElemType x, ElemType y) x = x * 1.1; y = y * 1.1; cout x endl; cout y endl; int main(void) cout f(3.0) a + i.a 3参考答案:3 char * 四、程序分析题(本大题共4 小题,每小题5 分,共 20 分)给出下面各程序的输出结果。1参考答案:0 5 18 9 98 2参考答案:8 2 3 4 5 3参考答案:构造 A 构造 B 构造 A 析
16、构 B 析构 A 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 7 页,共 9 页 - - - - - - - - - 学而不思则惘,思而不学则殆4参考答案:15.3 1 2 1.1 2.2 五、程序改错题(本大题共3 小题,每小题5 分,共 15 分)指出下面程序中的错误,说明错误原因,并加以改正。1参考答案:第 7 行“ a = x, b = y”有错,初始列表的格式错,应改为“a(x), b(y) ” 。2参考答案:第 10 行有错,模板函数无隐式转换功能,
17、函数调用Max(16.8, 518) 无法确定参数类型,可第 11 行的“ Max(16.8, 518) ”改为“ Max(16.8, 518.0) ” 。3参考答案:第 9 行 “int operator int() ” 有错, 类型转换函数不能有返回值类型,可改为“operator int() ” 。六、编程题(本大题26 分)参考程序:#include / 预处理命令using namespace std; / 使用标准命名空间std const double PI = 3.1415926; / 定义常量 PI class Shape public: Shape() / 构造函数virt
18、ual Shape() / 析构函数virtual Show() = 0; / 显示面积名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 8 页,共 9 页 - - - - - - - - - 学而不思则惘,思而不学则殆static double totalArea; / 总面积static void ShowTotalArea() cout 总面积 : totalArea endl; ; class Circle: public Shape private: dou
19、ble radius; / 半径public: Circle(double r): radius(r) totalArea += PI * r * r; / 构造函数Circle() / 析构函数virtual Show() cout 圆面积 : PI * radius * radius endl; ; / 显示面积; class Rectangle: public Shape private: double length; / 长double width; / 宽public: Rectangle(double l, double w): length(l), width(w) totalA
20、rea += l * w; / 构造函数Rectangle() / 析构函数virtual Show() cout 矩形面积 : length * width endl; ; / 显示面积; double Shape:totalArea = 0; / 初始化 totalArea int main(void) Circle c(1); / 定义圆对象c.Show(); / 显示面积Rectangle r(1, 2); / 定义矩形对象r.Show(); / 显示面积Shape:ShowTotalArea(); / 显示总面积return 0; / 返回值 0, 返回操作系统 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 9 页,共 9 页 - - - - - - - - -