版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、姓名 :_时间 :_DCCBB AADAD一、选择题 (1*10=10)1如果派生类以 proctected方式继承基类,则原基类的protected 和 public 成员在派生类的访问性分别是:DA public 和 publicBpublic 和 protectedC protected和 publicDprotected和 protected解析:通过 protected方式继承基类后, 原基类的私有成员不可访问, 而 protected和 public 成员均变成 protected 成员。答案: D2有如下头文件:int F1();static int F2();classs CA
2、public:int F3();static int F4();this 指针的是: C在所描述的函数中,具有隐含AF1BF2CF3DF4本题考查的是 this 指针。this 指针式一个隐含的指针,它隐含于每个类的非静态成员函数中,它明确地表示出了成员函数当前操作的数据所属的对象。当对一个对象调用成员函数时,编译程序先将对象的地址赋值给 this 指针,然后调用成员函数,每次成员函数存取数据成员时,则隐含使用 this 指针。this 指针是指向对象本身的指针,它只存在于类的非静态成员中。f1,f2 不是成员函数,不存在隐含指针; f4 为静态成员函数, 也不含有 this 指针;含有 th
3、is 指针的函数在调用时按 thiscall 调用约定调用。故本题答案为 C。3派生类的成员函数不能访问基类的:CA共有成员和保护成员B共有成员C私有成员D保护成员本题考查的是继承的类型。类的继承方式有公有继承、保护继承和私有继承三种方式。对于公有继承基类中的成员访问属性不变,对于保护和私有继承基类中的成员转换为相应的访问类型。但是如果基类成员的访问属性为private的,则不能被继承。故本题答案为C。4按照“后进先出”原则组织数据的数据结构是BA队列B栈1C双向链表D二叉树答案为 B。5下列关于虚函数的说明中,正确的是:BA从虚基类继承的函数都是虚函数B虚函数不得是静态成员函数C只能通过指针
4、或者引用调用虚函数D抽象类中的中的成员函数都是虚函数。答案为 B。6已知 Value 是个类, value 是 Value 的一个对象。下列以非成员函数形式重载的运算符函数原型中,正确的是: A A Value operator+(Value v, int i); C Value operator+(Value v, int=0); i=0);7有如下类的定义:Class MyClassint value;public:MyClass(int n):value(n)int getValue() const return value;BValue operator+(Value v=value,
5、 int i); D Value operator+(Value v=value, int;则类 Myclass 的构造函数的个数是:AA1 个B2 个C3 个D4 个还有默认拷贝构造函数, 应该选 B8有如下类的定义:class Constantspublic:static double GetPI(void)return 3.14159;Constants constants;下列各组语句中,能输出3.14159 的是: BA coutGetPI();和 coutConstants:GetPI();Bcoutconstants.GetPI();和 coutConstants.GetPI()
6、;C coutGetPI();和 coutGetPI();D coutconstants.GetPI();和 coutConstants:GetPI();9有如下程序:#include using namespace std;class VAC2public:int f() constreturn 3;int f()return 5;int main()VAC v1;const VAC v2;coutv1.f()v2.f();return 0;运行时的输出结果是: AA53B35C55D 3310有如下类声明:class Baseprotected:int amount;public:Base
7、(int n = 0):amount(n)int getAmount() const return amount;class Derived:public Baseprotected:int value;public:Derived(int m, int n):value(m),Base(n)int getData() const return value + amount;已知 x 是一个 Derived 对象,则下列表达式中正确的是:BA x.value + x.getAmount();B x.getData() + x.getAmount();C x.getData() x.amount
8、;Dx.value + x.amount;二、填空题 (8*2=16)400_6 4 4 4 4return *this _1.下列中 a 的值是 _400_#define AAA 200#define BBB AAA+100int a= BBB*2Dog speak Voice32. 以下为 Windows NT 下的 32 位 C+ 程序,请计算sizeof 的值。char str =“Hello ” ;char *p = str ;int n = 10;请计算sizeof (str ) = _5_sizeof ( p ) = _4_sizeof ( n ) = _4_void Func
9、( char str100)/请计算sizeof( str ) = _4_void *p = malloc( 100 );/请计算sizeof ( p ) = _4_3. 补充完整下面的类定义: class XCHchar* a;public:XCH(char* aa) / 构造函数 a=new charstrlen(aa)+1;strcpy(a,aa);XCH& operator=(const XCH& x) / 重载赋值函数delete a;a=new charstrlen(x.a)+1;strcpy(a,x.a);_;XCH()delete a;_ return *this _4. 请写
10、出下面程序的输出结果#includeusing namespace std;class Animal public:4virtual char* getType() const return Animal;virtual char* getVoice() const return Voice;class Dog:public Animalpublic:char* getType() const return Dog;char* getVoice() const return Woof;void type(Animal& a) couta.getType();void speak(Animal
11、a) couta.getVoice();int main()Dog d;type(d);cout speak ;speak(d);coutendl;return 0;_ Dog speak Voice_三、问答题 (5*10+9+15=74)1. 编写类 String 的拷贝构造函数和赋值函数 ( 可以调用 C+/C 的字符串库函数 )(15) 。已知类 String 的原型为:class Stringpublic:String(const char *str = NULL);/ 普通构造函数String(const String &other);/ 拷贝构造函数 String(void);/
12、 析构函数String & operate =(const String &other);/ 赋值函数private:char *m_data;/ 用于保存字符串;请编写 String 的上述 4 个函数。/ String 的析构函数String:String(void)/3 分delete m_data;/ 由于 m_data 是内部数据类型,也可以写成delete m_data;/ String 的普通构造函数String:String(const char *str)/ 6 分5if(str=NULL)m_data = new char1;/ 若能加NULL判断则更好*m_data =0
13、 ;elseint length = strlen(str);m_data = new charlength+1;/ 若能加NULL判断则更好strcpy(m_data, str);/ 拷贝构造函数String:String(const String &other)/ 3 分int length = strlen(other.m_data);m_data = new charlength+1;/ 若能加NULL判断则更好strcpy(m_data, other.m_data);/ 赋值函数String & String:operate =(const String &other)/ 13 分/
14、 (1) 检查自赋值/ 4 分if(this = &other)return *this;/ (2) 释放原有的内存资源/ 3 分delete m_data;/ ( 3)分配新的内存资源,并复制内容/ 3 分int length = strlen(other.m_data);m_data = new charlength+1;/ 若能加NULL判断则更好strcpy(m_data, other.m_data);/ ( 4)返回本对象的引用/ 3 分return *this;2 不调用 C+/C的字符串库函数,请编写函数strcmp 的实现 (10) 。int strcmp ( const ch
15、ar * src, const char * dst )char *strcpy(char *strDest, const char *strSrc)6char *address = strDest;while (*strDest+ = * strSrc+)NULL ;return address ;3F(n)=F(n-1)+F(n-2),F(0)=1,F(1)=1.分别用递归和循环求F(5)(10) 。public int R(int num)if(num=0)num=1;else if(num=1)num=1;elsenum=R(num-1)+R(num-2);return num;pub
16、lic int c(int num) int a = 1;int b = 1;int c = 0;for (int i = 0; i next=NULL)return head;p1=head;p2=p1-next;while(p2!=NULL)7p3=p2-next;p2-next=p1;p1=p2;p2=p3;head-next=NULL;p1=head;return head;5从冒泡排序、直接插入排序、二分插入排序和选择排序四种排序算法中,选择其中一种算法,写出它的实现? (10)#include#include#include#includevoid BubbleSort(int *
17、L,int N)/ 冒泡 int i,j;int t;for(i=1;ii;j-)if(LjLj-1)t=Lj;Lj=Lj-1;Lj-1=t;int SelectMinKey(int *L,int N,int n)int i,min=n;for(i=n+1;i=N;i+)if(LiLmin)min=i;8return min;void SelectSort(int *L,int N)/ 选择 int i,j;int t;for(i=1;iN;i+)j=SelectMinKey(L,N,i);if(i!=j)t=Li;Li=Lj;Lj=t;void InsertSort(int *L,int N
18、)/ 插入 int i,j;for(i=2;i=N;i+)if(LiLi-1)L0=Li;Li=Li-1;for(j=i-2;L0Lj;j-)Lj+1=Lj;Lj+1=L0;void ShellInsert(int *L,int N, int dk) /对顺序表 L 作一趟希尔插入排序。本算法对算法10.1 作了以下修改:/1.前后记录位置的增量是dk,而不是 1;/2. r0只是暂存单元,不是哨兵。当j=0 时,插入位置已找到。int i,j;for(i=dk+1;i=N;+i)if(Li0&L0Lj);j-=dk)Lj+dk=Lj;/记录后移,查找插入位置Lj+dk=L0;/插入 / Sh
19、ellInsertvoid ShellSt(int *L,int N, int dlta, int t) /算法 10.5/按增量序列 dlta0.t-1对顺序表 L 作希尔排序。for(int k=0;kt;+k)ShellInsert(L,N, dltak);/一趟增量为 dltak的插入排序 / ShellSortvoid ShellSort(int *L,int N)/希尔int t=(int)log(N);int k,*dlta;dlta=(int*)malloc(t*4);/产生增量序列for(k=0;kt;k+)dltak=(int)pow(2,t-k)-1;ShellSt(L,
20、N,dlta,t);int main()int N=250;int i,j,k;int t;int ti16;int *L;srand(time(NULL);printf(长度 t|冒泡 t|选择 t|插入 t|希尔 n);printf(-+-);for(j=0;N100000;j+)10L=(int *)malloc(N+1)*4);t=0;for(i=1;i=N;i+)Li=rand();tit+=clock();BubbleSort(L,N);tit+=clock();for(i=1;i=N;i+)Li=rand();tit+=clock();SelectSort(L,N);tit+=c
21、lock();for(i=1;i=N;i+)Li=rand();tit+=clock();InsertSort(L,N);tit+=clock();for(i=1;i=N;i+)Li=rand();tit+=clock();ShellSort(L,N);tit+=clock();printf(n%dt,N);for(k=0;k4;k+)printf(| %dt,(ti2*k+1-ti2*k);N*=5;printf(nn);6一个类中, const 类型成员函数的主要作用是什么?在该函数中可以调用该类的什么类型的成员变量和成员函数?该类的一个非 const 对象可以调用 const 成员函数吗? (10)(1)可以定义const 常量,具有不可变性。(2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。例如: voidf(constinti)编译器就会知道i 是一个常量,不允许修改;11(3)可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。同宏定义一样,可以做到不变则已,一变都变!如(1)中,如果想修改Max的内容,只需要:const int Max=you want;即可!(4)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。还
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国男士古龙水市场深度调研与销售模式分析研究报告(2024-2030版)
- 2024年中国四角法兰市场调查研究报告
- 中国焊接材料行业盈利模式及产销趋势预测研究报告(2024-2030版)
- 中国火焰探测器行业未来前景及投资潜力预测研究报告(2024-2030版)
- 中国润滑油抗氧剂行业竞争策略及需求潜力预测研究报告(2024-2030版)
- 课程设计开发主体中公
- 课程设计打印要不要钉
- 施工索赔课程设计
- 电话拨号模拟课程设计
- 深圳皮具修复课程设计
- 期中试卷(试题)-2024-2025学年三年级上册数学青岛版
- 期中押题卷(试题)-2024-2025学年数学六年级上册北师大版
- 期中模拟(1-3单元)(试题)-2024-2025学年六年级上册数学苏教版
- 统编版2024年新版道德与法治七年级上册第二单元《成长的时空》单元整体教学设计
- 点亮文明 课件 2024-2025学年苏少版(2024)初中美术七年级上册
- 廉政法规知识测试及答案
- 国开2024年秋《机电控制工程基础》形考任务3答案
- 中国高血压防治指南(2024年修订版)解读(总)
- 一+《展示国家工程++了解工匠贡献》(教学课件)-【中职专用】高二语文精讲课堂(高教版2023·职业模块)
- 结婚函调报告表
- 网站内容管理系统(CMS)
评论
0/150
提交评论