版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.第1章 类和对象一、 选择题1.C 2.B 3.C 4.A 5.C6.A 7.C 8 C 9A 10 C二、阅读题1x=2,y=32x=2,y=3x!=y3Cstatic:va1=0cs1.vaI=1cs2.val=2cs1.val=4cs2.vaI=4四、改错题#include #include class person public: person(int n,char* nam,char s) num=n; strcpy(name,nam); sex=s; coutConstructor called.endl; person( ) coutDestructor called.endl
2、; 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,dou
3、ble w=0,double 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);coutbo
4、x1.area()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(CPoin
5、t x,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(2
6、0,30),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 CComplex public: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()return re
8、al;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); /调用复数类的拷贝构造函数c
9、out 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 &s);private:cha
10、r *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()delete
11、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 namespace std
12、;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();int com
13、pare(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=ch;snRep
14、eat=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) s nin
15、dex-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 i
16、s: ; 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获得字符串c1中第5个字符是:chendl; cout下面是插入字符串c1中一个特殊字符dendl; c1.Setat(5,d); cout插入后字符串c1变为: ; c1.Print(); / coutendl; if(c1.IsEmp
17、ty()=1) coutString is empty.endl; else coutString isnt empty.endl; cout下面是判断字符串c1清空endl; c1.Vacate(); cout清空后输出字符串c1: n; c1.Print(); cout字符串已被清空endl; cout请按任意键继续b;/ cout*以下是对串的赋值*endl; CString c5=c2; coutString c5=c2 is: ;c5.Print(); coutendl; cout*以下是对串的比较*endl; int temp=pare(c3); cout以下比较c2与c30)co
18、utStringc3endl; else if(temp0)coutStringc2Stringc3endl; elsecoutStringc9=Stringc4endl;coutendl; cout以下比较c2与任意字符串Goodboy!0)coutGoodboy!endl; else if(pare(Goodboy!)0)coutStringc2Goodboy!endl; else coutStringc2 =Goodboy!endl; 第二章 继承和派生一、 选择题1D 2.B 3. D一、 阅读程序题四、编程题4.1 #include #include#define PAI 3.14c
19、lass Circle public:Circle()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:Roun
20、dtable()strcpy(color,白色);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
21、 Animalpublic: 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
22、; cout宽: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,30);
23、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 可以停止奔跑、?:”这五个运算符不能重载。3.1.5 运算符重载必须遵循哪些原则?运算符重载可以使程序更加简洁,使表达式更加直观,增强可读性。但是,运算符重载使用不宜过多,否则会带来一定的麻烦。运算符重载必须遵循以下原则:(1) 重载运算符含义必须清楚。(2) 重
24、载运算符不能有二义性。3.2 填空题3.2.1 C+中多态性包括两种多态性: (1) 和 (2) 。前者是通过 (3) 实现的,而后者是通过 (4) 和 (5) 来实现的。答案:(1)编译时的(2)运行时的(3)函数和运算符的重载(4)类继承关系(5)虚函数3.2.2 纯虚函数定义时在函数参数表后加 (1) ,它表明程序员对函数 (2) ,其本质是将指向函数体的指针定为 (3) 。答案:(1)=0(2)不定义(3)NULL3.2.3在基类中将一个成员函数说明成虚函数后,在其派生类中只要 (1) 、 (2) 和 (3) 完全一样就认为是虚函数,而不必再加关键字 (4) 。如有任何不同,则认为是
25、(5) 而不是虚函数。除了非成员函数不能作为虚函数外, (6) 、 (7) 和 (8) 也不能作为虚函数。答案:(1)同虚函数名(2)同参数表(3)同返回类型。如基类中返回基类指针,而派生类中返回派生类指针是允许的(4)virtual(5)重载(6)静态成员函数(7)内联函数(8)构造函数第三大题答案:31答案:#include#includeclass CStudentchar name20;char nativeplace20;char code30;int age;float score;public : CStudent(char *, char*,char*,int ,float);
26、 CStudent(CStudent &s);void display(); float operator+(CStudent s1);CStudent:CStudent(char *name, char*native,char*code,int age,float score)strcpy(this-name,name);strcpy(this-nativeplace,native);strcpy(this-code,code);this-age=age;this-score=score;CStudent:CStudent(CStudent &s)strcpy(this-name,s.nam
27、e);strcpy(this-nativeplace,s.nativeplace);strcpy(this-code,s.code);this-age=s.age;this-score=s.score;void CStudent:display()coutname nativeplace code age scorescore+s1.score;void main()CStudent w(whl,zhengzhou30,90);w.display();CStudent c(ctm,zhengzhou30,90); c.display();co
28、utw+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;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
29、,8,10);couttr1+tr2endl;33答案:#includeclass BaseClasspublic:virtual void f1()coutBaseClass:f1()endl;void f2()coutBaseClass:f2()endl;class DerivedClass: public BaseClasspublic:void f1()coutDerivedClass:f1()endl;void f2()coutDerivedClass:f2()f1(); Bptr-f2(); Dptr=&d1; Dptr-f1(); Dptr-f2();习题四一、选择题1D 2A
30、3B 4C 5. C 6C 7 A 二、简答题1什么叫做流?流的提取和插入是指什么?I/O流在C+中起着怎样的作用?答:流是一种抽象,它负责在数据的生产者(程序/文件)和数据的消费者(文件/程序)之间建立联系,并管理数据的流动。一般意义下的读操作在流数据抽象中被称为(从流中)提取,写操作被称为(向流中)插入。完成数据从动态(内存)到静态(外存)的转换,或着是从静态(外存)到动态(内存)的转换。2什么是字节流、字符流和二进制流?答:根据对字节内容的解释方式,字节流分为字符流(也称文本流)和二进制流。字符流将字节流的每个字节按ASC字符解释,它在数据传输时需作转换,效率较低。例如源程序文件和文本文
31、件都是字符流。由于ASC字符是标准的,所以字符流可以直接编辑,显示或打印,字符流产生的文件通行于各类计算机。二进制流将字节流的每个字节以二进制方式解释,它在数据传输时不作任何转换,故效率高。但各类计算机对数据的二进制存放格式各有差异,且无法人工阅读,故二进制流产生的文件可移植性较差。3cerr和clog作用是什么?有何区别?答:对于输入提示信息或输出结果而言, cerr和clog的用法相同,但作用不同。cerr的作用是向标准错误设备(standard error device)输出有关出错信息。cerr流中的信息只能在显示器输出。当调试程序时,往往不希望程序运行时的出错信息被送到其他文件,而要
32、求在显示器上及时输出,这时应该用cerr,cerr流中的信息是用户根据需要指定的。clog流对象也是标准错误流,它是console log的缩写。它的作用和cerr相同,都是在终端显示器上显示出错信息。不同的是cerr不经过缓冲区,直接向显示器上输出有关信息,而clog中的信息存放在缓冲区中,缓冲区满后或遇endl时向显示器输出。4用什么方法来控制输入输出流中出现的错误?答:为提高程序的可靠性,应在程序中检测I/O流的操作是否正常。当检测到流操作出现错误时,可以通过异常处理来解决问题。5比较读写文本文件与二进制文件的异同。答:从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。
33、ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为:ASC码: 00110101 00110110 00110111 00111000 十进制码: 5678 共占用4个字节。ASCII码文件可在屏幕上按字符显示, 例如源程序文件就是ASCII文件,用DOS命令TYPE可显示文件的内容。 由于是按字符显示,因此能读懂文件内容。二进制文件是按二进制的编码方式来存放文件的。 例如, 数5678的存储形式为: 00010110 00101110只占二个字节。二进制文件虽然也可在屏幕上显示, 但其内容无法读懂。C+系统在处理
34、这些文件时,并不区分类型,都看成是字符流,按字节进行处理。 输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。 因此也把这种文件称作“流式文件”。6随机读写是什么意思,常用于哪种类型的文件?答:在C+中可以由程序移动文件指针,从而实现文件的随机访问,即可读写流中任意一段内容。一般文本文件很难准确定位,所以随机访问多用于二进制文件。7文件流和字符串流有什么区别? 答:文件在C+看来是字符流或二进制流,文件流是以外存文件为输入输出对象的数据,所以文件流是与设备相关的。可以把流的概念应用到字符串(String)上。这样字符串就可以看作字符串流。字符串流不是以外存文件为输入输出的对象,而以内存中用户定义的字符数组为输入输出的对象。字符串流是与内存相关,所以也称内存流。可以用输入输出操作来完成字符串流的操作。三、编程题1 x= 468y= -3.42565x=468 y=-3.42565x=+468*y=-3.43* 2 生成一个名称为data.txt文件,内容:This is test data 3源程序。#include #include using namespace std;int main() for(int n=8;n0;n-)coutsetw(20-n)*setfill(*)setw(2*n-1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版暨南大学离婚心理学研究与应用合同3篇
- 二零二五年度电梯门套绿色环保材料采购合同3篇
- 二零二五年度集团高层管理人员聘任与职务调整合同6篇
- 二零二五年股票代持与反洗钱义务合同3篇
- 二零二五年驾驶员劳务派遣与车辆充电桩油耗管理服务合同3篇
- 二零二五版户外拓展训练特色课程开发与推广合同3篇
- 二零二五年度玻璃器皿生产设备租赁合同3篇
- 2025年度国际教育培训机构合作合同6篇
- 展会展位搭建服务合同(2篇)
- 2025年度餐饮设施设备租赁合同书3篇
- 医院手术室医院感染管理质量督查评分表
- 心内电生理导管及器械
- 称量与天平培训试题及答案
- 超全的超滤与纳滤概述、基本理论和应用
- 2020年医师定期考核试题与答案(公卫专业)
- 2022年中国育龄女性生殖健康研究报告
- 各种静脉置管固定方法
- 消防报审验收程序及表格
- 教育金规划ppt课件
- 呼吸机波形分析及临床应用
- 常用紧固件选用指南
评论
0/150
提交评论