ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:20.15KB ,
资源ID:20179399      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20179399.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++期末练习题答案.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C++期末练习题答案.docx

1、C+期末练习题 答案C+期末练习题一、选择题1、使用值传递方式将实参传给形参,下列说法正确的是( A )A.形参是实参的备份 B.实参是形参的备份C.形参和实参是同一对象 C.形参和实参无联系2、在函数调用时,如某一默认参数要指明一个特定值,则有( B )A.其之后的参数都必须赋值 B.其之前的参数都必须幅值C.其前后所有参数都必须幅值 D.其前后所有参数都不必赋值3、int Func(int, int);不可与下列哪个函数构成重载( B )A.int Func(int, int, int); B.double Func(int, int);C.double Func(double, doub

2、le); D.double Func(int, double);4、类的私有成员可在何处访问( D )A.通过子类的对象访问 B.本类及子类的成员函数中 C.通过该类对象访问 D.本类的成员函数中填空题5、this指针存在的目的是( B )A保证基类公有成员在子类中可以被访问B保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码一、保证基类保护成员在子类中可以被访问D保证基类私有成员在子类中可以被访问6、在编译指令中,宏定义使用哪个指令( B )A#include B#define C#if D#else7、设类A将其它类对象作为成员,则建立A类对象时,下列描述正确的是( B )AA类

3、构造函数先执行 B成员构造函数先执行 C两者并行执行 D不能确定8、对类中声明的变量,下列描述中正确的是( C )A属于全局变量 B只属于该类 C属于该类,某些情况下也可被该类不同实例所共享D任何情况下都可被该类所有实例共享9、构造函数是在( B )时被执行的。A.程序编译 B.创建对象C.创建类 D.程序装入内存10、假设已经定义好了类Student,现在要定义类Derived,它是从Student私有派生,则定义类Derived的正确写法是( D ) A.class Derived : Student private / B.class Derived : Student public /

4、 C.class Derived : public Student / D.class Derived : private Student / 二、填空题1、面向对象六大设计原则为: 单一职责原则 、 接口隔离原则 、 依赖倒转原则 、 里氏替换原则 、 开闭原则 、 迪米特法则 。2、在 C+ 程序设计中,建立继承关系倒挂的树应使用 单一 (或单) 继承。3、在一个类中可以对一个操作符进行 函数 重载。4、当建立 对象 时,程序自动调用该类的构造函数。5、设px是指向一个类动态对象的指针变量,则执行”delete px;”语句时,将自动调用该类的 析构函数 。6、若需要把一个函数”void

5、F();”定义为一个类AB的友元函数,则应在类AB的定义中加入一条语句: friend void F(); 7、在面向对象的程序设计中,通过 类 实现数据隐藏;通过 继承 实现代码的复用。8、在C+中,定义重载函数时,应至少使重载函数的 参数个数 或 参数类型 不同。9、在C+类中,有一种不能定义对象的类,这样的类只能被继承,称之为 抽象类 ,定义该类至少具有一个 纯虚函数 。10、允许访问一个类的所有对象的私有成员、公有成员和保护成员的函数是该类的 成员函数 和 友员函数 。11、在C+中,用 数组 、 指针 、和 引用 作为函数参数,能够将参数值带回。12、在C+中,虽然友元提供了类之间数

6、据进行访问的一种方式,但它破坏了面向对象程序设计的 封装 特性。13、C+中,对象保存在内存中, 栈内存 是自动分配和释放的,而 堆内存 需要用户自己申请和释放。14、执行完C+程序中的三条语句: int a, b, *c=&a; int * &p = c; p = &b; 后c指向 b 。15、在已经定义了整型指针 ip 后,为了得到一个包括 10 个整数的数组并由 ip 所指向,应使用语句 ip=new int 10; 。三、程序阅读1、给出下面程序的输出结果。 #include using namespace std; template T min(T ml,T m2) return(m

7、1m2) ? ml:m2; void main( ) cout min (1,7) t min (2.0,5.0)endl; cout min (y,bt min (A,a)endl; 答案:1 2b A2、给出下面程序的输出结果。 #include using namespace std; class A public: int x; A( ) A(int a)x=a; int get(int a)return x+a; ; void main( ) A a(8); int(A:*p)(int); p=A:get; cout(a.*p)(5)endl; A*pi=a; cout*P)(7)e

8、ndl; 答案:13153、程序的输出结果如下: 1,9 50,30 请根据输出数据在下面程序中的下划线处填写正确的语句。 源程序如下: #include using namespace std; class base private: int m; public: base( ) ; base(int a):m(a) int get( )return m; void set(int a)m=a; ; void main() base*ptr=new base2; ptr- set(30); ptr= _ ptr+1; _; ptr- set(50); base a2=1,9; couta0.

9、get( ),a1.get( )endl; coutget( ),; ptr=ptr-1; coutget( ) _endl; delete ptr; 4、在下划线处填上缺少的部分。 #include #include using namespace std; class complex public: int real; int imag; complex(int r=0,int i=0) real=r; imag=i; ; complex operator+(_ complex&a _,complex& b) int r=a.real+b.real; int i=a.imag+b.imag

10、; return_ complex(r,i) _; void main( ) complex x(1,2),y(3,4),z; z=x+y; coutz.real+z.imagiendl; 四、编程题1、在三角形类triangle实现两个函数,功能是输入三个顶点坐标判断是否构成三角形。要求使用下方point类来存储三个顶点坐标。class point private:float x,y; public:point(float a,float b)x=a;y=b; point( )x=0;y=0; , void set(float a,float b)x=a;y=b; float getx( )

11、return x; float gety( )return y; ;(判断三条边能构成三角形的条件:任意两边之和大于第三边或任意两边之差小于第3边。)答案: #include #include #include “point.h”class triangleprivate:point x,y,z;float s1,s2,s3;public:triangle(float x1,float y1,float x2,float y2,float x3,float y3);/用于输入三个顶点坐标 bool test();/用于判断是否构成三角形; triangle: triangle (float x

12、1,float y1,float x2,float y2,float x3,float y3)x.set(x1,y1); y.set(x2,y2); z.set(x3,y3); void triangle:test() s1=sqrt(x.getx()-y.getx()*(x.getx()-y.getx()+(x.gety()-y.gety()*(x.gety()-y.gety(); s2=sqrt(x.getx()-z.getx()*(x.getx()-z.getx()+(x.gety()-z.gety()*(x.gety()-z.gety(); s3=sqrt(y.getx()-z.get

13、x()*(y.getx()-z.getx()+(y.gety()-z.gety()*(y.gety()-z.gety();if(s1+s2s3)&(s1+s3s2)&(s2+s3s1)| (abs(s1-s2)s3)&(abs(s1-s3)s2)&(abs(s3-s2)s1) cout“三个顶点能构成三角形”; return true;elsecoutnext=NULL)returnhead;p=head-next;head-next=NULL;while(p!=NULL) temp1=head;head=p;temp2=p;p=p-next;temp2-next=temp1;return h

14、ead;3、定义并实现一个字符栈类Stack,数据成员包括一个存放字符的数组stck和一个栈指针tos,栈数组的大小由常量SIZE确定。要求:1)实现栈的基本操作Push()和Pop(),注意判断栈满和栈空的情况2)实现c_count()方法计算字符ch出现的次数,如果ch不出现,则返回03)实现inverse()方法使数组元素按逆序排列答案:const int SIZE=100;class Stackprivate: char stckSIZE; int tos;public: Stack():tos(0); void Push(char ch); char Pop(); int c_cou

15、nt(char ch); void inverse();void Stack:Push(char ch) if(tos=SIZE) cout”nStack is fulln”; else stcktos=ch; tos+; char Stack:Pop() if(tos=0) cout 0 ) temp-; if(stcktemp=ch) count+; return count;void Stack:inverse() char *p=new chartos; for(int i=0;i=tos-1;i+) pi=ai; for(int i=0;i=tos-1;i+) ai=atos-i-1

16、; delete p;4、小明开了一家面馆,菜单包括:牛肉面、羊肉面、臊子面、西红柿鸡蛋面等。请你设计服务员类、厨房类、面条类、牛肉面、羊肉面等,模拟点单制作面条的全过程。因为菜单上面条种类一直在变化更改,因此要求使用设计模式工厂模式,来减少后期代码修改的工作量。要求:1)要求使用继承实现 2)要求使用工厂设计模式 3)编写main()方法进行测试答案:#pragma once#include using namespace std;class Noodleprivate: string n_type;public: Noodle(string _n_type) :n_type(_n_type

17、) ; virtual Noodle(); virtual void make(); virtual void cooking(); virtual void sauce();#include Noodle.hNoodle:Noodle()void Noodle:make() cout n_type.c_str() 制作中,开始擀面条 endl;void Noodle:cooking() cout n_type.c_str() 制作中,开始煮面条 endl;void Noodle:sauce() cout n_type.c_str() 制作中,开始调味 make(); noodle-cooki

18、ng(); noodle-sauce(); return noodle;#include #include Waiter.h#include Cook.hint main() Cook cook; Waiter waiter(cook); Noodle *noodle1 = waiter.orderNoodles(牛肉面); if (noodle1) delete noodle1; Noodle *noodle2 = waiter.orderNoodles(羊肉面); if (noodle2) delete noodle2; Noodle *noodle3 = waiter.orderNoodles(臊子面); if (noodle3) delete noodle3; Noodle *noodle4 = waiter.orderNoodles(西红柿鸡蛋面); if (noodle4) delete noodle4;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1