


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、姓名: 时间: DCCBB AADAD一、选择题 (1*10=10)1.如果派生类以proctected方式继承基类,则原基类的protected和public成员 在派生类的访问性分别是: DA. public 和 publicB. public 和 protectedC. protected 和 publicD. protected 和 protected解析:通过protected方式继承基类后,原基类的私有成员不可访问,而protected和public成员均变成protected成员。答案: D2. 有如下头文件: intFl(); static int F2(); classs C
2、Apublic:int F3();static int F4();;this 指针的是: CB. F2在所描述的函数中,具有隐含A. FlC. F3 D. F4 本题考查的是 this 指针。this 指针式一个隐含的指针,它隐含于每个类的非静态成员函数中,它明确地表示出了成员函数当前操作的数据所属的对象。当对一个对象调用成员函数时,编译程fl,盘不是成员序先将对象的地址赋值给 this 指针,然后调用成员函数,每次成员函 数存取数据成员 时,则隐含使用 this 指针。this 指针是指向对象本身的指针,它只存在于类的非静态成员中 函数,不存在隐含指针; f4 为静态成员函数,也不含有 th
3、is 指针;含有 this 指针的函 数在调用时按 thiscall 调用约定调用 故本题答案为 Co3. 派生类的成员函数不能访问基类的: CA.共有成员和保护成员B.共有成员C.私有成员D.保护成员本题考查的是继承的类型。类的继承方式有公有继承、保护继承和私有继承二种方式。对于公有继承基类中的成员访问属性不变 对于保护和私有继承基类中的成员转换为相应的访问类型。但是如果基类成员的访问属性为private 的,则 不能被继承。故本题答案为 C。4. 按照“后进先出”原则组织数据的数据结构是A.队列B.栈5. 下列关于虚函数的说明中,正确的是:BA.从虚基类继承的函数都是虚函数B.虚函数不得是
4、静态成员函数C.只能通过指针或者引用调用虚函数D.抽象类中的中的成员函数都是虚函数答案为B。6.已知Value是个类,value是Value的一个对象。下列以非成员函数形式重载的运算符函数原型中,正确的是:AA. Value operator+(Value v, i nt i);C. Value operator+(Value v, in t=0); i=0);7.有如下类的定义:Class MyClassint value;public:MyClass(i nt n):value( n) int getValue() const return value; ;则类Myclass的构造函数的个
5、数是:AA. 1个C. 3个B. Value operator+(Value v=value, int i);D. Value operator+(Value v=value, intB. 2个D. 4个还有默认拷贝构造函数,应该选B8. 有如下类的定义:class Con sta nts public:static double GetPI(void)return 3.14159;;Con sta nts con sta nts;下列各组语句中,能输出 3.14159的是:BA. cout?constants->GetPI();和 cout?Constants:GetPI();B. c
6、out?constants.GetPI()和 cout?Constants.GetPI();C. cout?constants->GetPI();和 cout?Constants->GetPI();D. cout?constants.GetPI()和 cout?Constants:GetPI();9. 有如下程序:#i nclude <iostream>using n amespace std;class VACpublic:int f() con stretur n 3;int f()return 5;int main()VAC vl;const VAC v2;cou
7、t?v 1. f()?v2. f();return 0;运行时的输出结果是:AA. 53B. 35C? 55D? 3310.有如下类声明:class Baseprotected:int amount;public:Base(i nt n = 0):am oun t( n)int getAm oun t() const retur n amoun t;class Derived:public Baseprotected:int value;public:Derived(i nt m, i nt n):value(m),Base( n) int getData() const return val
8、ue + amoun t;;已知x是一个Derived对象,则下列表达式中正确的是: BBA. x.value + x.getAmount(); B ? x.getData() + x.getAmount();C? x.getData() - x.amount; D. x.value + x.amount;二、填空题(8*2=16)400_6 4 4 4 4 return *this _ Dog speak Voice1 ?下列中a的值是 400#define AAA 200#defi ne BBB AAA+100int a= BBB*22.以下为 Windows NT下的32位C卄程序,请计
9、算sizeof的值。char str = "Hello"char *p = str;int n = 10;请计算sizeof (str) = 5sizeof ( p) = 4 _void Func ( char str100)请计算sizeof( str) = 4 1void *p = malloc( 100 );请计算sizeof ( p ) = 4 3. 补充完整下面的类定义: class XCHchar* a;public:XCH(char* aa) 构造函数a=new charstrlen(aa)+1 ; strcpy(a,aa);delete a;XCH&
10、 operator=(const XCH& x) 重载赋值函数 a=new charstrlen(x.a)+1 ;strcpy(a,x.a);XCH()delete a;;_ return *this 4. 请写出下面程序的输出结果#incl ude <i ostre am>using namespace std; class Animal public:"Voice ” ;class Dog:public An imalpublic:char* getType() const return "Dog” ;char* getVoice() const r
11、eturn "Woof;” ;void type(A nimal & a) cout? a.getType();void speak(Animal a) cout? a.getVoice();) int main()Dog d;type(d);cout? n speak "speak(d);cout? endl; return 0; Dog speak Voice 、问答题(5*10+9+15=74)1.编写类String的拷贝构造函数和赋值函数(可以调用C+/C的字符串库函 已知类String的原型为:class Str ing数)(15) opublic:Str
12、i ng(co nst char *str = NULL);Str ing( const Stri ng & other);? String(void);Stri ng & operate =(c onst Stri ng &other);/普通构造函数/拷贝构造函数/析构函数/赋值函数private:char *m data;/用于保存字符串请编写String的上述4个函数。/ String的析构函数Strin g: - Stri ng( void)delete m_data;/由于m_data是内部数据类型,也可以写成delete m_data;/ String 的
13、普通构造函数 String: String(const char *str)/ 13 分4分3分3分m_data/ 若能加 NULL 判断则更3if(str=NULL)m_data = new charl; / 若能加 NULL 判断则更好 *m_data = '0' elseint length = strlen(str);m_data = new charlength+l; / 若能加 NULL 判断则更好 strcpy(m_data, str); / 拷贝构造函数String: String(const String &other) / 3 分int length
14、 = strlen(othei*.m_data);m_data = new charlength+l; / 若能加 NULL 判断则更好 strcpy(m_data, other. m_data); )/ 赋值函数String & String:operate =(const String &other) ( 1)检查自赋值 if(this = & other) return *this;( 2)释放原有的内存资源delete m_data;/ (3)分配新的内存资源,并复制内容int length = strlen(other.m_data); new charlen
15、gth+l;strcpy(m_data, other.m_data);/ (4)返回本对象的引用return *this;)2 不调用 C+/C 的字符串库函数,请编写函数 strcmp 的实现 (10) 。 int strcmp ( const char * src, . const char * dst)char *strcpy(char *strDest, const char *strSrc)char * address = strDest;while (*strDest+ = * strSrc+)NULL; return address ;F(5) (10)。3. F(n)=F(n-
16、1) +F(n-2), F(0) =1, F(1) =1.分别用递归和循环求public int R(int num) if(num 二 0) num=l; else if(num=l) num=l;else num=R(num-1)+R(num-2); retum num;public int c (int num) int a = 1;int b 二 1;int c 二 0;for (int i = 0; i < num- 2; i+) c = a + b; a = b; b 二 c; return c;4. 写一算法,对单链表实现就地逆置 ( 不要构造新结点 )( 10)node
17、Weserve( no de*head) node*pl, *p2, *p3;if (head=NULL) | | (head->next=NULL)retum head;pl 二 head; p2=pl>next; while (p2!=NULL) p3=p2->next;p2->next 二 pl;pl=p2;p2 二 p3;head->next 二 NULL; pl 二 head; return head;择其h> void5. 从冒泡排序、直接插入排序、二分插入排序和选择排序四种排序算法中,选 中一种算法,写出它的实现? (10)#include&l
18、t;stdio. h> #include<time. h> #include<math. h> #include<malloc? BubbleSort(int *L, int N) / 冒泡int i, j;int t;for (i=l; i<=N; i+)for(j=N; j>i; j ) if(Lj Lj-l) t=Lj; Lj=Lj-l; LjT=t;int SelectMinKey(int *L, int N, int n) int i,min=n;for(i=n+l;i 二 N;i+) if(Li<Lmin) min=i; ret
19、UTn min;void SelectSort(int *L, int N) / 选择int i, j;int t;for(i=l;i<N;i+)j=SelectMinKey(L, N, i); if(i!=j)t=Li;Li=Lj;Lj=t; void InsertSort(int *L, int N) / 插入int i, j;for(i=2;i<=N;i+)if(Li Li-l)L0=Li;Li=Li-l; for(j=i-2;L0 Lj : j )Lj+l=Lj;Lj+1=LO; void Shelllnsert(int *L, int N, int dk) / 对顺序表
20、L 作一趟希尔插入排序。本算法对算法 10. 1 作了以下修改 : /1.前后记录位置的增量是 dk,而不是1 ;/2. r0只是暂存单元,不是哨兵。当j =0时,插入位置已找到。int i, j;for(i=dk+l;i<=N;+i)if (Li Li-dk) / 需将 L.ri 插入有序增量子表LO=Li ;/ 暂存在 L.rOfor(j=i-dk; (j>O&&LO<Lj) ; j-=dk)Lj+dk 二 Lj;/ 记录后移,查找插入位置Lj+dk=LO ;/ 插入 / Shelllnsert void ShellSt(int *L, int N, in
21、t dlta, int t) / 算法 10. 5 / 按增量序列 dlta0. . t-1 对顺序表 L 作希尔排序。for(int k=0;k<t;+k)Shelllnsert (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;k<t;k+)dltak = (int)pow(2, tk)-l;ShellSt (L, N, dl
22、ta, t);int main ()int N=250;int i, j, k;int t;int ti 16;int *L;srand (t ime (NULL);printf("长度t冒泡t |选择t |插入t |希尔n");prin tf (" + , ) ; for(j=O;N<100000;j+) L=(int *)malloc (N+l)*4);for(i 二 1;i<=N;i+) Li=rand();ti t+=clock(); BubbleSort (L, N); tit+ =clock();for(i 二 1;i<=N;i+)
23、Li=rand();tit+=clock(); SelectSort (L, N); tit+ =clock();for (i=l;i<=N;i+)Li=rand();tit+ =clock();InsertSort (L, N);tit+ =clock();for(i=l;i<=N;i+)Li=rand();tit+ =clock();ShellSort (L, N);tit+ =clock();printf( n%dt, N);for(k=0;k<4;k+)printf (/z | %dt, (ti2*k+l-ti 2*k);N* 二 5;printf("nrT);6. 一个类中,const类型成员函数的主要作用是什么?在该函数中可以调用该类的什么类型的成员变量和成员函数?该类的一个非const对象可以调用 const成员函数吗? (10)(1) 可以定义 const 常量,具有不可变性。(2) 便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。例如:void f (constint i) 编译器就会知道 i 是一个常量,不允许修改;(3) 可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。同宏定义一样,可以做 到不变则已,一变都变!女口 (1) 中,如果想
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理服务方法
- 网络文学作品影视改编权合作与分成协议
- 虚拟游戏装备交易平台分割及收益协议
- 花园围栏翻新与维护责任协议
- 谵妄个案护理
- 夫妻忠诚保证及共同债务处理协议
- 外籍技术顾问驻场咨询与技术服务协议
- 生物医药数据出境安全审查及合规操作协议
- 知识产权代理机构股权合作与知识产权战略布局协议
- 智慧社区智能安防系统服务与物业管理平台合作协议
- T∕CACM 1078-2018 中医治未病技术操作规范 拔罐
- 糖尿病膳食指南2024
- 腹腔穿刺术评分表
- 2024届上海市闵行区三年级英语第二学期期中监测模拟试题含答案
- 电气一次主接线图课件
- 创新创业教育的课程设计与实施研究
- 2024年重庆环卫集团有限公司招聘笔试参考题库含答案解析
- 手机摄影培训摄像教程拍照技巧技术含内容两篇
- 【运动康复专业病例分析报告:腰间盘突出症的术后康复运动疗法设计5700字(论文)】
- Unit5Ourdreams(课件)重大版英语六年级下册
- 光伏电站运行规程(完整版)
评论
0/150
提交评论