




免费预览已结束,剩余3页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机科学与技术信息管理与信息系统 专业面向对象程序设计C+试卷(A卷)(闭卷)班级 姓名 学号 题号一二三四五总分分值1020202525100得分一、判断题:(10分)(共10小题,每小题1分)1. 重载函数必须有不同的参数列表。2. 私有继承中,基类中所有成员在派生类成员函数中都不可以访问。3. 动态绑定的多态性必须通过虚函数实现。4. 友元函数的声明在类体内,它是一种成员函数。5. 在类CDate中的析构函数可以声明为:void CDate();6. 在C+中,只能重载已有的运算符。7. 引用和指针都可作为函数参数。8. 可以在类的构造函数中对静态成员进行初始化。9. 可以用delete释放不是用new运算符分配的内存。10. 内联函数相比普通函数的优点是直接将函数体展开,因此省去函数调用栈的开销。二、单选题:(20分)(共10小题,每小题2分)1. 关键字 _ 说明对象或变量初始化后不会被修改。 A. static B. public C. const D. inline2. C+中,用于解决二义性问题的技术是_。A. 虚函数B. 函数重载C. 静态函数D. 虚继承3. 如果调用带有默认参数的函数时缺少一个参数,则_的默认值就作为这一参数值。 A. 第一个 B. 最后一个 C. 中间一个 D. 以上都不是4. 要让一个类的所有对象具有共同的数据,要使用_。A. 静态数据成员 B. 私有数据成员C. 公有数据成员 D. 保护数据成员5. 已知A是一个自定义的类,请问以下代码调用拷贝构造函数的次数是_。A& f(A* pa)pa = new A();return *pa;int main()A a = f(NULL);return 0;A. 0次B. 1次C. 2次D. 3次6. 假定要对类A的对象a、b和c执行以下操作:c = a+ b;必须要重载加号运算符函数,以下写在A类体内的声明语句哪个能满足要求_。A. operator+ (A& b);B. A operator+ (A& a, A& b);C. friend A operator+ (A& a, A& b);D. friend A & operator+ ( A& b);7. 如果有int x,*p; float y,*q;则下面操作正确的是_。A. p=x B. p=qC. p=&x D. p=&y8. 模板的主要用途是为了_。A. 提高代码的可重用性B. 提高代码的运行效率C. 实现多态性D. 加强类的封装性9. C+源文件的扩展名是_。A. .cB. .dswC. .dspD. .cpp10. 若已定义了A类的构造函数A(int a=0); 以下关于new运算符的用法错误的是_。A. A* p = new A;B. A* p = new A(1);C. A* p=new A1D. A* p = new A (1) 1;三、填空题:(20分)(共10个空格,每格2分)1. 已知以下程序的输出结果为:name: crqname: carter请将程序补充完整#include #include class Achar* name;public:void PrintName() (1) ;A(char* name) (2) ; (3) ;A() (4) ;class B: public Apublic:B( (5) ) :A(n);int main( )B b1(crq), b2(carter);b1.PrintName(); b2.PrintName();2. 定义一个函数模板,能够完成数组元素的求和,将以下程序补充完整:templateT sum( (7) , int n) (8) ;for (int i=0;in;i+)s += ai;return s;3. 请分别写出类A的一元运算符“+”的前缀方式和后缀方式的成员运算符函数形式的声明语句: (9) 、 (10) 。四、程序分析题:(25分)(共2小题,第1小题10分,第2小题15分)1. 分析程序,写出运行结果,并分析原因#include using namespace std;class Baseint y,m,d;public:Base(int _y=1, int _m=2, int _d=3)y = _y; m = _m; d = _d;print(int y=1.5)couty m dy = y;class Derived: public Basedouble y,m,d;public:Derived(double y=1, double m=2, double d=3): Base(y,m,d),y(y),m(m),d(d) void print(double y=2.5)couty m dy = y; ;int main()Derived a(3.5, 4.5);Base& b = a, c=a;a.print();b.print();c.print(20.5);return 0;2. 分析程序,完成:(1)写出程序的运行结果,并分析原因;(2)程序没有编译错误,但程序仍然存在内存管理方面的问题,请指出错误之处,分析错误的原因并进行改正。#include using namespace std;class Apublic:A(int a=5) coutcall A:A(a)endl; A() coutcall A:A()endl;class B: public A char *buf;public: B(int a)A:A(15);buf=(char*)malloc(a);coutcall B:B(a)endl;B()free(buf);coutcall B:B()endl;int main() A* a=new B(10); delete a;return 0;五、程序设计题:(25分)1. 编写程序,要求:(1)定义抽象基类CShape,由它派生出五个派生类:Circle(圆形)、Square(正方形)、Rectangle(长方形)、Trapezoid(梯形)和Triangle(三角形),用虚函数分别计算各种图形的面积,并对它们按从大到小排序。(2)要求用基类指针数组。使它的每一个元素指向一个派生类的对象。注:主函数中定义如下对象:Circle circle(1.5); Square square(2.5); Rectangle rectangle(1.5, 2.5);Trapezoid trapezoid(1.5, 2.5, 1.0);Triangle triangle(3.0, 4.0);计算机科学与技术信息管理与信息系统台州学院2 0 11 学年第 1 学期 10 级 专业面向对象程序设计C+试卷A卷参考答案一、判断题:(10分)(共10小题,每小题1分)12345678910TFTFFTTFFT二、单选题:(20分)(共10小题,每小题2分)12345678910CDBABCCADD三、填空题:(20分)(共10个空格,每格2分)(1) coutname: namename = new charstrlen(name)+1_(3)_ strcpy(this-name,name)_ (4)_ delete name; _ _(5)_ char* n _ (6) typename T (7) T a (8)_ T s = 0; _(9)_ A& operator+() (10)_ A& operator+(int)_四、程序分析题:(25分)(共2小题,第1小题10分,第2小题15分)1、2.5 4.5 31 4 320 4 3对象a的初始值为3.5 4.5 3,其中第三个参数默认值,初始化列表里调用了基类的构造函数,因此通过b和c访问到的成员值是3 4 3a.print()调用派生类函数,并修改y值为2.5b.print()调用基类函数,并修改基类的y值为1c.print(20.5);调用基类函数,并修改基类的y值为202、call A:A(5)call A:A(15)call A:A(15)call B:B(10)call A:A(5)(1)构造对象时先调用基类构造函数,再调用派生类构造函数;如果没有在初始化列表中显式调用,则调用默认的基类构造函数;析构函数的顺序与构造函数相反(2)基类里的析构函数不是虚函数,通过基类的指针指向派生类对象时,只会调用基类的析构函数,派生类的析构函数不会被调用,导致了派生类对象指针的内存泄露,基类的析构函数加上virtual变成虚函数后,由于C+的多态性,能够解决问题。五、程序设计题:(25分)程序设计基本代码框架10分,程序细节处理15分。参考代码如下:#include #include using namespace std;class Shapepublic:virtual double area() const =0; ;class Circle:public Shapepublic:Circle(double r):radius(r)virtual double area() const return 3.14159*radius*radius; protected:double radius; ;class Square:public Shapepublic:Square(double s):side(s) virtual double area() const return side*side; protected:double side;class Rectangle:public Shapepublic:Rectangle(double w,double h):width(w),height(h) virtual double area() const return width*height; protected:double width,height; ;class Trapezoid:public Shapepublic:Trapezoid(double t,double b,double h):top(t),bottom(t),height(h)virtual double area() const return 0.5*(top+bottom)*height; protected:double top,bottom,height; ;class Triangle:public Shapepublic:Triangle(double w,double h):width(w),height(h) virtual double area() const return 0.5*width*height; protected:double width,height; ;bool cmp(Shape* a, Shape* b)return a-area()b-area();int main()Circle circle
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 自动化施工方案
- 幼儿园大班《滑梯的回忆》教案
- 建筑施工特种作业-高处作业吊篮安装拆卸工真题库-2
- 容错性定义题目及答案
- 1 1 集合-2026版53高考数学总复习A版精炼
- 2023-2024学年云南省保山市高二下学期期末质量检测数学试题(解析版)
- 2023-2024学年山东省青岛市莱西市高二下学期期末考试数学试题(解析版)
- 新疆盛鼎龙新材料科技有限责任公司2500吨-年高效偶联剂5000吨-年甲基苯基硅油及3万吨-年硅酮胶项目环评报告
- 2025年秋三年级上册语文同步教案 8 总也倒不了的老屋
- 物流公司和客户合作协议
- 房租代收款合同模板
- 2024届涿鹿县小升初全真数学模拟预测卷含解析
- 医疗机构审核管理制度
- 华南理工综评机测试题(一)
- 浙江省杭州市临平区2023-2024学年五年级下学期期末语文试卷
- 智能仓库与仓储管理自动化
- 2024-2025部编人教版2二年级语文下册全册测试卷【共10套附答案】
- 第一课能源史简介
- 医疗器械仓库管理课件
- 2024年火电电力职业技能鉴定考试-600MW超临界机组运行笔试参考题库含答案
- 2024年全国工会财务知识大赛备赛试题库500(含答案)
评论
0/150
提交评论