版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第 1 章 类和对象一、 选择题1.C 2.B 3.C 4.A 5.C6.A 7.C 8 C 9A 10 C 二、阅读题 1 x=2,y=32 x=2,y=3 x!=y3Cstatic:va1=0cs1.vaI=1cs2.val=2cs1.val=4cs2.vaI=4四、改错题#include #include class personpublic:person(int n,char* nam,char s)num=n; strcpy(name,nam); sex=s;coutConstructor called.endl; person( )coutDestructor called.end
2、l;void display( )coutnum: numendl; coutname: nameendl; coutsex: sexendlendl;private:int num;char name10;char sex;int main( )person s1(10010,Wang_li,f); s1.display( );person s2(10011,Zhang_fun,m);s2.display( );return 0;五、编程题51#include using namespace std;class CBoxpublic :CBox(double l=0,double w=0,d
3、ouble h=0); double area();double volume ();private :double lengh;double width; double high;CBox:CBox(double l,double w,double h) lengh=l; width=w; high=h;double CBox:area()return 2*(lengh*width+lengh*high+width*high);double CBox:volume ()return lengh*width*high;void main()CBox box1(4,5,6);coutbox1.a
4、rea()endl;coutbox1.volume()endl;5.2#include using namespace std;class CPointpublic :CPoint(double a=0,double b=0)x=a;y=b;CPoint(CPoint & p)x=p.x;y=p.y;void print()cout(x,y);private :double x,y;class CLinepublic:CLine(double x1=0,double y1=0,double x2=0,double y2=0):p1(x1,y1),p2(x2,y2) CLine(CPoint x
5、,CPoint y):p1(x),p2(y)CLine(CLine &lin)p1=lin.p1;p2=lin.p2;void DrawLine() coutLine form; p1.print(); coutto;p2.print(); coutendl;void Linedel() coutdelete lineendl;void move(CPoint &x,CPoint &y)coutmove lineendl;p1=x;p2=y;private :CPoint p1,p2;void main()CPoint point1(1,5),point2(5,8),point3(20,30)
6、,point4(40,50); CLine line1(point1,point2);CLine line2(2,3,8,12); line1.DrawLine (); line2.DrawLine (); line2.move(point3,point4);line2.DrawLine (); line2=line1;line2.DrawLine (); line1.Linedel ();5.3#include using namespace std; class CComplexpublic:CComplex(double, double);CComplex(CComplex &c); /
7、 复数类的拷贝构造函数声明 double GetReal();double GetImag();void Print();private:double real;double imag;CComplex:CComplex (double r=0.0, double i=0.0)real = r;imag = i;cout 调用两个参数的构造函数 endl;CComplex:CComplex (CComplex &c) / 复数类的拷贝构造函数定义real = c.real;imag = c.imag;cout 调用拷贝构造函数 endl;double CComplex:GetReal()ret
8、urn real;double CComplex:GetImag()return imag;void CComplex:Print() / 显示复数值cout ( real , imag ) endl;CComplex add(CComplex &x,CComplex &y) / 普通函数完成两个数的加法,对象作为 函数参数 ,return CComplex(x.GetReal() +y.GetReal() ,x.GetImag ()+y.GetImag ();void main(void)CComplex a(3.0,4.0), b(5.6,7.9);CComplex c(a); / 调用复
9、数类的拷贝构造函数 cout a = ;a. Print();cout b = ;b. Print();cout c = ;c. Print(); coutc=a+bendl; c=add(a,b); cout c = ; c.Print ();5.4#include #include using namespace std;类声明class CStudent /public:CStudent(char *,float,float,float); CStudent(CStudent &s);CStudent();void display();friend float avg(CStudent
10、&s); private:char *name;float grad3;CStudent:CStudent(char *na,float a,float b,float c) name=new charstrlen(na)+1; strcpy(name,na);grad0=a;grad1=b;grad2=c;CStudent:CStudent(CStudent &s)name=new charstrlen()+1; strcpy(name,);grad0=s.grad0;grad1=s.grad 1;grad2=s.grad 2;CStudent:CStudent()d
11、elete name;void CStudent:display( )int i;coutname:nameendl;for(i=0;i3;i+)coutgradi:gradiendl;float avg(CStudent &s) / 普通函数,需要引用私有成员,声明为学生类的友元函数 return (s.grad0+s.grad1 +s.grad2)/3;int main( )CStudent stud1( 三,79,98,82);/ 定义对象stud1.display();cout 平均成绩: avg(stud1)endl;return 0;5.5#include using namesp
12、ace std;class CStringpublic :CString(); /缺省构造函数,初始化为空串CString(char ch,int nRepeat);/ 用一个字符重复 n 次,初始化字符串CString(const char*psz); /用一个字符串初始化CString(CString &stringser); / 拷贝构造函数CString();int GetLength() const;bool IsEmpty() const;char GetAt(int nindex) const;void Setat(int nindex,char ch);void Print()
13、;int compare(CString& string);int compare(const char* psz)const;void Vacate();private :char *s;CString:CString()s=NULL;CString:CString(CString& stringser)s=new charstrlen(stringser.s)+1;if(s!=0)strcpy(s,stringser.s);CString:CString(char ch,int nRepeat) s=new charnRepeat+1;for(int i=0;inRepeat;i+) si
14、=ch;snRepeat=0;CString:CString(const char*psz)s=new charstrlen(psz)+1;if(s!=0)strcpy(s,psz);int CString:GetLength() const int i=0;while (si!=0)i+;return i;bool CString:IsEmpty() constif(s=NULL)return 1;elsereturn 0;void CString:Vacate()s0=0;coutNow have vacated string.1&nindex1&nindex=GetLength()+1)
15、 s nindex-1=ch;void CString:Print()couts0)return 1;else if(strcmp(s,string.s)0)return 1;else if(strcmp(s,psz)0)return -1;else return 0;CString:CString()/coutendl 析构 :sendl;if(s!=NULL)deletes;void main()char a4=y;char b4;CString c1(Hellow),c2(c1); coutStringc1 is: ; c1.Print(); coutendl;coutStringc2
16、is: ; c2.Print(); coutendl;CString c3(b,3);coutStringc3 is: ; c3.Print(); coutendl;cout以下是对串的基本操作 *endl;int num=c1.GetLength(); char ch;coutc1 的长度是 : numendl;ch=c1.GetAt(5);cout获得字符串cl中第5个字符是:chendl;cout 下面是插入字符串 c1 中一个特殊字符 dendl;c1.Setat(5,d);cout 插入后字符串 c1 变为: ;c1.Print();/coutendl;if(c1.IsEmpty()
17、=1)coutString is empty.endl; elsecoutString isnt empty.endl;cout 下面是判断字符串 c1 清空 endl; c1.Vacate();cout 清空后输出字符串 c1: n;c1.Print();cout 字符串已被清空 endl;cout 请按任意键继续 b;/*CString c5=c2;coutString c5=c2 is: ;c5.Print(); coutendl;cout以下是对串的比较*endl;int temp=pare(c3); cout 以下比较 c2 与 c30)coutStringc3endl; else
18、if(temp0)coutStringc2Stringc3endl; elsecoutStringc9=Stringc4endl; coutendl;cout 以下比较 c2 与任意字符串 Goodboy!0) coutGoodboy!endl;else if(pare(Goodboy!)0) coutStringc2Goodboy!endl;elsecoutStringc2 =Goodboy!endl;第二章 继承和派生一、选择题1D 2.B 3. D 一、阅读程序题四、编程题4.1#include #include#define PAI 3.14class Circlepublic:Cir
19、cle()r=0;Circle (double d)r=d;double area()return(PAI*r*r);void display1()cout 桌子的面积 :area()endl;private:double r;class Tablepublic:Table()heig=0;Table (double h) heig=h;void display2()cout 桌子的高度 :heigendl;private:double heig;class Roundtable : public Circle,public Tablepublic:Roundtable()strcpy(col
20、or,白色 );Roundtable(double a,double b,char* c):Circle(a),Table(b)strcpy(color,c);void display () display1();display2();cout 桌子的颜色 :colorendl; private:char color20;void main()Roundtable s(2.0,3.0, 黑色 );s.display();4.2如果 Age 在基类中被定义为私有的, SetAge(int n) 不能直接给 Age 赋值,如果 Age 是基类 的公有成员变量,则可以直接赋值。class Anima
21、lpublic:Animal();int Age;class Dog:public Animalpublic:Dog();Void SetAge(int n)Age=n;4.3 #include class Rectanglepublic:Rectangle (double l,double w)length=l,width=wdouble area()return length*width; void display1();private:double length;double width;void Rectangle:display1()cout 长 :lengthendl; cout
22、宽 :widthendl; class Cuboid:public Rectanglepublic:Cuboid (double L,double w,double h):Rectangle(L,w)high=h,volume=L*w*high ; double vol()return area()*high;void show (); private: double high;double volume;void Cuboid:show()display1();cout 高 :highendl; cout 体积 :vol()endl;void main()Cuboid cub (10,20,
23、30);cub.show();4.4#include class Vehiclepublic:Vehicle():maxspeed(0),weight(0)Vehicle(double m,double w):maxspeed(m),weight(w);void run () cout 可以奔跑 endl; void stop () cout 可以停止奔跑 endl; private:double maxspeed;double weight;class Bicycle:virtual public Vehiclepublic:Bicycle (double m,double w,double
24、 h):Vehicle(m,w),height(h) private:double height;class Motorcar : virtual public Vehiclepublic:Motorcar (double m,double w,double s):Vehicle(m,w),setnum(s) private:double setnum;class Motorcycle:public Bicycle,public Motorcarpublic:Motorcycle(double m,double w,double h,double s):Bicycle(m,w,h),Motor
25、car(m,w,s), Vehicle(m,w);void main()Motorcycle s1(300,10,6,30);s1.run();s1.stop();如果不把 Vehicle 设置为虚基类,会产生二义性问题。第 3 章 多态性3.1 简答题3.1.1 哪些运算符可以重载? 几乎所有的运算符都可以重载,除了以下的几个运算符: , : , ?: J,3.1.2 运算符重载后,优先级和结合性如何?用户重新定义运算符, 不改变原运算符的的优先级和结合性。 同时运算符重载后, 也不 改变运算符的语法结构, 即单目运算符只能重载为单目运算符, 双目运算符只能重载为双目 运算符。3.1.3 编
26、译程序如何选用运算符函数?在每一种编译系统中, 运算符实际上都对应一个函数, 只是这种运算对用户具有透明性, 使用者并不知道函数的存在。 运算符重载实际上是运算符函数的重载, 所以运算符的重载实 际上是函数的重载。编译程序对运算符重载的选择, 遵循着函数重载的选择原则。 当遇到不很明显的运算符 时,编译程序将去寻找参数相匹配的运算符函数。3.1.4 重载运算符有哪些限制?(1) 不可臆造新的运算符(2) 坚持四个不能改变。 不能改变运算符原有的优先级 不能改变运算符原有的结合性 不能改变运算符原有的语法结构 不能改变运算符原有的操作数个数但允许改变 运算符的返回类型(3) C+规定,运算符中,
27、参数类型都是部类型时, 不允许重载。“:、*、-、?: ” 这五个运算符不能重载。3.1.5 运算符重载必须遵循哪些原则? 运算符重载可以使程序更加简洁,使表达式更加直观,增强可读性。但是,运算符重载 使用不宜过多,否则会带来一定的麻烦。运算符重载必须遵循以下原则:( 1)重载运算符含义必须清楚。( 2)重载运算符不能有二义性。3.2填空题3.2.1 C+中多态性包括两种多态性:(1) 和 (2)。前者是通过(3) 实现的,而后者是通过 (4) 和 (5)来实现的。答案:(1)编译时的 (2 )运行时的(3) 函数和运算符的重载(4) 类继承关系(5) 虚函数3.2.2 纯虚函数定义时在函数参
28、数表后加(1),它表明程序员对函数(2),其本质是将指向函数体的指针定为(3) o答案:(1) =0(2) 不定义(3) NULL在基类中将一个成员函数说明成虚函数后,在其派生类中只要(1)、(2)和(3)完全一样就认为是虚函数,而不必再加关键字(4)。如有任何不同,则认为是(5)而不是虚函数。除了非成员函数不能作为虚函数外,(6)、( 7)和( 8)也不能作为虚函数。答案:(1)同虚函数名(2 )同参数表(3) 同返回类型。如基类中返回基类指针,而派生类中返回派生类指针是允许的(4) virtual(5) 重载(6) 静态成员函数(7) 联函数(8 )构造函数第三大题答案:3. 1答案:#i
29、n clude#in cludeclass CStude ntchar n ame20;char n ativeplace20;char code30;int age;float score;public :CStude nt(char *, char*,char*,i nt ,float);CStude nt(CStude nt &s);void display();float operator+(CStude nt s1);CStudent:CStudent(char *name, char*native,char*code,int age,float score) strcpy(this
30、-name,name); strcpy(this-nativeplace,native);strcpy(this-code,code);this-age=age; this-score=score;CStudent:CStudent(CStudent &s)strcpy(this-name,); strcpy(this-nativeplace,s.nativeplace);strcpy(this-code,s.code);this-age=s.age; this-score=s.score;void CStudent:display()agecoutname nativeplace
31、 code scorescore+s1.score;void main()CStudent w(whl,zhengzhou,30,90); w.display();CStudent c(ctm,zhengzhou,30,90);c.display(); coutw+cendl;32 答案:#include#include#includeclass CTrianglefloat a,b,c;public:CTriangle(float a,float b,float c)this-a=a; this-b=b; this-c=c; float GetArea() float t=(a+b+c)/2
32、;return sqrt(t*(t-a)*(t-b)*(t-c);float operator +(CTriangle t)return this-GetArea()+t.GetArea();void main()CTriangle tr1(3,4,5),tr2(6,8,10); couttr1+tr2endl;33 答案:#include class BaseClass public: virtual void f1() coutBaseClass:f1()endl; void f2() coutBaseClass:f2()endl; ;class DerivedClass: public
33、BaseClass public:void f1() coutDerivedClass:f1()endl; void f2() coutDerivedClass:f2()f1();Bptr-f2();Dptr=&d1;Dptr-f1();Dptr-f2(); 习题四、选择题1D 2 A 3 B 4 C 5. C 6 C 7 A 二、简答题1什么叫做流?流的提取和插入是指什么?I/O流在C+中起着怎样的作用?答:流是一种抽象,它负责在数据的生产者(程序 /文件)和数据的消费者(文件 /程序)之 间建立联系,并管理数据的流动。一般意义下的读操作在流数据抽象中被称为 (从流中) 提取,写操作被称为
34、(向流中) 插入。 完成数据从动态(存)到静态(外存)的转换,或着是从静态(外存)到动态(存)的转换。 2什么是字节流、字符流和二进制流?答:根据对字节容的解释方式,字节流分为字符流(也称文本流)和二进制流。字符流将字节流的每个字节按ASCH字符解释,它在数据传输时需作转换,效率较低。例如源程序文件和文本文件都是字符流。由于ASCH字符是标准的,所以字符流可以直接编辑,显示或打印,字符流产生的文件通行于各类计算机。它在数据传输时不作任何转换, 故效率高。且无法人工阅读, 故二进制流产生的文件和 clog 的用法相同,但作用不同。 cerr 的输出有关出错信息。 cerr 流中的信息只能二进制流
35、将字节流的每个字节以二进制方式解释,但各类计算机对数据的二进制存放格式各有差异, 可移植性较差。3 cerr 和 clog 作用是什么?有何区别? 答:对于输入提示信息或输出结果而言, cerr 作用是向标准错误设备 (standard error device)在显示器输出。 当调试程序时, 往往不希望程序运行时的出错信息被送到其他文件,而要求在显示器上及时输出,这时应该用 cerr , cerr 流中的信息是用户根据需要指定的。clog 流对象也是标准错误流,它是 console log 的缩写。它的作用和 cerr 相同,都是在终端显示 器上显示出错信息。不同的是 cerr 不经过缓冲区
36、,直接向显示器上输出有关信息,而 clog 中的信息存放在缓冲区中,缓冲区满后或遇 endl 时向显示器输出。4用什么方法来控制输入输出流中出现的错误? 答:为提高程序的可靠性, 应在程序中检测 I/O 流的操作是否正常。 当检测到流操作出现错 误时,可以通过异常处理来解决问题。5比较读写文本文件与二进制文件的异同。答:从文件编码的方式来看,文件可分为 ASCII 码文件和二进制码文件两种。ASCII 文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存 放对应的 ASCII 码。例如,数 5678的存储形式为:ASM00110101 00110110 00110111 00
37、111000十进制码:5678 共占用 4 个字节。 ASCII 码文件可在屏幕上按字符显示,例如源程序文件就是ASCII文件,用DOS命令 TYPE可显示文件的容。由于是按字符显示,因此能读懂文件容。二进制文件是按二进制的编码方式来存放文件的。 例如, 数 5678 的存储形式为: 00010110 00101110 只占二个字节。二进制文件虽然也可在屏幕上显示, 但其容无法读懂。 C+系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。输入输出字符流的开始和结束只由程序控制而不受物理符号 (如回车符 )的控制。 因此也把这种文件 称作“流式文件”。6随机读写是什么意思,常用
38、于哪种类型的文件?答:在C+中可以由程序移动文件指针,从而实现文件的随机访问,即可读写流中任意一段 容。一般文本文件很难准确定位,所以随机访问多用于二进制文件。7文件流和字符串流有什么区别?答:文件在C+看来是字符流或二进制流,文件流是以外存文件为输入输出对象的数据,所 以文件流是与设备相关的。可以把流的概念应用到字符串 (String )上。这样字符串就可以 看作字符串流。字符串流不是以外存文件为输入输出的对象, 而以存中用户定义的字符数组 为输入输出的对象。字符串流是与存相关, 所以也称存流。可以用输入输出操作来完成字符 串流的操作。三、编程题1x= 468y= -3.42565x=468 y=-3.42565 x=+468*y=-3.43*2 生成一个名称为 data.txt 文件,容: This is test data3 源程序。#in
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汉中市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及答案详解(夺冠系列)
- 乌海市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)有答案详解
- 张家界市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(精练)
- 2026年云浮市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(黄金题型)
- 安阳市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(轻巧夺冠)
- 连云港市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及答案详解1套
- 锡林郭勒盟农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及答案详解(新)
- 2026年池州市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(突破训练)
- 武隆县农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及1套完整答案详解
- 无锡市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及答案详解(基础+提升)
- 供货方案及保证措施供货方案供货实施方案及保障措施
- 急诊床旁超声诊断
- 地铁礼仪知识课件
- 课件-领越领导力
- 《化妆基础》课件-化妆造型的工具与用品
- 压力管道培训课件合集
- 氢气呼吸机氢健康
- 妇幼保健院2025年护理部护理专项培训计划
- 患者在ICU过渡期的护理
- 塔里木盆地富满油田超深断裂破碎体油藏地质特性及勘探启示
- 凉皮店开业活动方案
评论
0/150
提交评论