




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、姓名 : 时 间 : _ _ _ _ _DCCBBAADAD一、选择题 (1*10=10)和 public 成员在派生而 protected 和 public1如果派生类以 proctected 方式继承基类, 则原基类的 protected 类的访问性分别是: DApublic 和 publicBpublic 和 protectedCprotected 和 publicDprotected 和 protected解析:通过 protected 方式继承基类后,原基类的私有成员不可访问, 成员均变成 protected 成员。答案:D2有如下头文件:intF1();staticintF2();
2、classsCApublic:in tF3();statici ntF4();;在所描述的函数中,具有隐含this指针的是:CF1B. F2C. F3D. F4本题考查的是this指针。this指针式一个隐含的指针,它隐含于每个类的非静态成员函数中,它明确地表示出了成 员函数当前操作的数据所属的对象。当对一个对象调用成员函数时,编译程序先将对象的 地址赋值给this指针,然后调用成员函数,每次成员函数存取数据成员时,则隐含使用 this指针。this指针是指向对象本身的指针,它只存在于类的非静态成员中。fl,f2不是成员函数,不存在隐含指针;f4为静态成员函数,也不含有this指针;含有thi
3、s指针的函数在调用 时按thiscall 调用约定调用。故本题答案为Co派生类的成员函数不能访问基类的:CA.共有成员和保护成员B.共有成员本题考查的是继承的类型。类的继承方式有公有继承、保护继承和私有继承三种方式。对于公有继承基类中的成员访 问属性不变,对于保护和私有继承基类中的成员转换为相应的访问类型。但是如果基类成 员的访问属性为private的,则不能被继承。故本题答案为Co 按照“后进先出”原则组织数据的数据结构是BA.队列B.栈C.双向链表D.二叉树答案为Bo 下列关于虚函数的说明中,正确的是:BA.从虚基类继承的函数都是虚函数B.虚函数不得是静态成员函数C.只能通过指针或者引用调
4、用虚函数D.抽象类中的中的成员函数都是虚函数。答案为Bo已知Value是个类,value是Value的一个对象。下列以非成员函数形式重载的运算符 函数原型中,正确的是:AA. Valueoperat0叶(Valuev,inti);B. Valueoperator+(Valuev=value,inti);C. Valueoperator+(Valuev,int=O);D. Valueoperator+(Valuev=value,inti=O);7 有如下类的定义:ClassMyClassin tvalue;public:MyClass(i ntn ):value( n)in tgetValue(
5、)co nstreturnvalue;则类Myclass的构造函数的个数是:AA. 1个B. 2个C. 3个D. 4个还有默认拷贝构造函数,应该选B有如下类的定义:classC on sta nts public:staticdoubleGetPI(void)return3.14159;;Con sta ntsc on sta nts;下列各组语句中,能输出3.14159的是:B coutconstants-GetPI();和 coutConstants:GetPI(); coutconstants.GetPI();和 coutGetPI();和 coutGetPI(); coutconsta
6、nts.GetPI();和 coutConstants:GetPI();有如下程序:#in cludeusingn amespacestd;classVACpublic:in tf()c on streturn3;in tf()return5;in tmai n()VACvl;con stVACv2;coutv1.f()vvv2.f();return。;运行时的输出结果是:AA. 53B. 35C. 55D. 33有如下类声明:classBaseprotected:in tam ount;public:Base(i ntn=O):am oun t( n)in tgetAm oun t()c o
7、n streturnamou nt;;classDerived:publicBaseprotected:in tvalue;public:Derived(i ntm,i ntn ):value(m),Base( n)in tgetData()con streturn value+amou nt;已知x是一个Derived对象,则下列表达式中正确的是:BA. x.value+x.getAmount();B. x.getData()+x.getAmount();C. x.getData() - x.amount;D. x.value+x.amount;、填空题(8*2=16)400_64444re
8、tur n*this_DogspeakVoice下列中a的值是 _400_#defi neAAA200#defin eBBBAAA+100in ta=BBB*2以下为 WindowsNTF的32位C+g序,请计算sizeof的值charstr= “ Hello ”;char*p=str;intn=10;请计算sizeof(str)=5sizeof(p)=4sizeof(n)=4voidFu nc(charstr100)/请计算sizeof(str)=4void*p=malloc(100);/请计算sizeof(p)=4补充完整下面的类定义:classXCHchar*a;public:XCH(c
9、har*aa)/ 构造函数a=n ewcharstrle n(aa)+1;strcpy(a,aa);XCH&operator=(constXCH&x) 重载赋值函数 deletea;a=n ewcharstrle n( x.a)+1;strcpy(a,x.a);XCH()deletea;;return*this请写出下面程序的输出结果#in cludeusingn amespacestd;classA ni malpublic:virtualchar*getType()con streturnA ni mal; virtualchar*getVoice()con streturnVoice;
10、;classDog:publicA ni malpublic: char*getType()c on streturnDog;char*getVoice()con streturnWoof;voidtype(A nimal&a)couta.getType();voidspeak(A ni mala)couta.getVoice();in tmai n()Dogd;type(d);coutspeak;speak(d);coute ndl;return。;DogspeakVoice三、问答题(5*10+9+15=74)编写类String的拷贝构造函数和赋值函数(可以调用C+/C的字符串库函数)(1
11、5)已知类String的原型为:classStri ngpublic:Stri ng(co nstchar*str=NULL);/普通构造函数Stri ng(co nstStri ng&other);/拷贝构造函数Stri ng(void);/析构函数Stri ng&operate=(co nstStri ng&other);/赋值函数private:char*m_data;/用于保存字符串;请编写String的上述4个函数。/String的析构函数Stri ng:Stri ng(void)/3分deletem_data;/由于m_data是内部数据类型,也可以写成 deletem_data;
12、/String的普通构造函数Stri ng:Stri ng(co nstchar*str)/6if(str=NULL)m_data=newchar1;若能加NULL判断则更好*m_data= O;elsein tle ngth=strle n( str);m_data=newcharlength+1;若能加 NULL判断则更好strcpy(m_data,str);/拷贝构造函数Stri ng:Stri ng(co nstStri ng&other)/3in tie ngth=strle n( other.m_data);m_data=newcharlength+1;若能加 NULL判断则更好s
13、trcpy(m_data,other.m_data);/赋值函数Stri ng&Stri ng:operate=(co nstStri ng&other)/13分/(1)检查自赋值/4分if(this=&o ther)return*this;/(2)释放原有的内存资源/3分deletem_data;/ ( 3)分配新的内存资源,并复制内容/3分in tle ngth=strle n( other.m_data);m_data=newcharlength+1;若能加 NULL判断则更好strcpy(m_data,other.m_data);/ (4)返回本对象的引用/3分return*this;
14、不调用C+/C的字符串库函数,请编写函数 strcmp的实现(10)。in tstrcmp(co nstchar*src,co nstchar*dst)char*strcpy(char*strDest,co nstchar*strSrc)char*address=strDest;while(*strDest+=*strSrc+)NULL;retur naddress; F(n)=F(n-1)+F(n-2),F(0)=1,F(1)=1.分别用递归和循环求 F(5)(10)publici ntR(i ntnu m)if(num =0)num=1;elseif( num=1)num=1;elsenu
15、m=R( nu m-1)+R( num-2);return num;publici ntc(i ntnu m)in ta=1;in tb=1;in tc=0;for(i nti=O;i next=NULL)retur nhead;p仁head;p2=p1- n ext;while(p2!=NULL)p3=p2-n ext;p2-n ext=p1;p1=p2;p2=p3;head- next=NULL;p仁head;retur nhead;5.从冒泡排序、直接插入排序、二分插入排序和选择排序四种排序算法中,选择其中一种算法,写出它的实现? (10)#in clude#in clude#in cl
16、ude#in cludevoidBubbleSort(i nt*L,i ntN)冒泡in ti,j;intt;for(i=1;ii;j-)if(LjLj-1)t=Lj;Lj=Lj-1;Lj-1=t;in tSelectMi nKey(i nt*L,i ntN,i ntn)in ti, min=n;for(i=n+1;i=N;i+) if(LiLmi n)mi n=i;returnmi n;voidSelectSort(i nt*L,i ntN)选择in ti,j;in tt;for(i=1;iN;i+)j=SelectMi nKey(L,N,i);if(i!=j)t=Li;Li=Lj;Lj=t
17、;voidl nsertSort(i nt*L,i ntN)插入in ti,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;voidShelll nsert(i nt*L,i ntN,i ntdk)/对顺序表L作一趟希尔插入排序。本算法对算法10.1作了以下修改:/1.前后记录位置的增量是dk,而不是1;2.r0只是暂存单元,不是哨兵。当jv=O时,插入位置已找到。in ti,j;for(i=dk+1;i=N;+i)if(Li0&L0Lj);j-=dk)Lj+dk=Lj;/记录后移,查找插入位
18、置Lj+dk=L0;/插入/ShellI nsert voidShellSt(i nt*L,i ntN,i ntdlta,i ntt)/ 算法 10.5一趟增量为dltak的插入排序/按增量序列dlta0.t-1for(i ntk=O;kt;+k)Shelll nsert(L,N,dltak);对顺序表L作希尔排序。/ShellSort voidShellSort(i nt*L,i ntN)/希尔in tt=(i nt)log(N);in tk,*dlta;产生增量序列dlta=(i nt*)malloc(t*4);for(k=0;kt;k+) dltak=(i nt)pow(2,t-k)-1
19、;ShellSt(L,N,dlta,t);in tma in() in tN=250;in ti,j,k;in tt;in tti16;in t*L;sran d(time(NULL);printf( 长度t|冒泡t|选择t|插入t|希尔n); printf(”+);for(j=0;N100000;j+)L=(i nt*)malloc(N+1)*4);t=0;for(i=1;i=N;i+)Li=ra nd();tit+=clock();BubbleSort(L,N);tit+=clock(); for(i=1;i=N;i+) Li=ra nd(); tit+=clock(); SelectSo
20、rt(L,N); tit+=clock();for(i=1;i=N;i+) Li=ra nd(); tit+=clock();In sertSort(L,N); tit+=clock();for(i=1;i=N;i+) Li=ra nd(); tit+=clock();ShellSort(L,N);tit+=clock();prin tf(n%dt,N);for(k=0;k4;k+)prin tf(|%dt,(ti2*k+1-ti2*k);N*=5;prin tf(nn);6.个类中,const类型成员函数的主要作用是什么?在该函数中可以调用该类的什么类 型的成员变量和成员函数?该类的一个非const对象可以调用const成员函数吗? (10)可以定义con st常量,具有不可变性。便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。例如:voidf(constinti)编译器就会知道i是一个常量,不允许修改;可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。同宏定义 一样,可以做到不变则已,一变都变!如(1)中,如果想修改Max的内容,只需要: constint
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 九年义务教育课程计划在职业教育中的应用
- 非营利组织财务合规性检查及整改措施
- 公交站策划书3
- 滨海县机关事业单位转任公务员考试真题2024
- 小学班干部组织能力培养计划
- 药剂科岗位职责与危机处理机制
- 广东水泥助磨剂生产建设项目可行性研究报告
- 个人消费欠条标准范文
- 四年级下册英语知识竞赛计划
- 示范工程综合效益分析报告
- 安全生产试题库看图找错课件
- 二级综合医院基本标准(2021年版)
- 北京市初中学业水平考试体育与健康知识模拟练习题(含答案)
- 市政工程质量通病与防治
- 配电项目工程重点、难点及解决措施
- 北京理工大学出版社二年级下册《劳动》教案
- JJG 966-2010手持式激光测距仪
- GB/T 26659-2011铸造用再生硅砂
- GB/T 21558-2008建筑绝热用硬质聚氨酯泡沫塑料
- GB/T 18494.1-2014变流变压器第1部分:工业用变流变压器
- GA/T 1698-2019法庭科学复制印章印文检验指南
评论
0/150
提交评论