C++实训指导书-简_第1页
C++实训指导书-简_第2页
C++实训指导书-简_第3页
C++实训指导书-简_第4页
C++实训指导书-简_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象程序设计(C+)实训指导书一、实训的目的和任务C+语言程序设计的实训,是教学计划中的一个有机组成部分,是培养学生综合应用所学的基础的理论,基本知识和技能,分析解决实际问题能力的重要一环,与其它教学环节紧密配合,相辅相成,是前面教学环节的继续,深入和发展。通过实训过程可在不同程度上提高调查研究,查问文献,实际应用的能力。二、实训内容指导(一)数据类型和表达式基础实训1、定义一个描述学生的结构体类型student,含有学号num、姓名name、性别sex、成绩score几个分量,再定义属于这个结构体类型的两个变量stu1、stu2。程序如下:#includestruct studentch

2、ar num25;char name25;char sex5;int score;int main() struct student stu1=123t,At,女t,88; struct student stu2=456t,Bt,男t,99; cout显示信息:endl; cout学号:stu1.num姓名:性别:stu1.sex成绩:stu1.scoreendl; cout学号:stu2.num姓名:性别:stu2.sex成绩:stu2.scoreendl; return 0;输出结果:2、建立一个适于描述碗和勺子的结构体,有关的信息是:两者都有货号、价格、颜色,不同的是碗的大小用口径来表示

3、,勺子的大小用枚举类型表示,分大、中、小三种。现有的勺子的大小是中,将其表示出来。程序如下:#includeusing namespace std;enum daxiaolarge,middle,small;struct utensilint num; float price; int color;union enum daxiao size; float diamter;void main() struct utensil s1; s1.num=1; s1.price=12; s1.color=9; s1.diamter=3; struct utensil s2; s2.num=2; s2.

4、price=32; s2.color=7; s2.size=large; cout显示碗和勺子的信息:endl; cout货号t价格t颜色t大小tendl; couts1.numts1.pricets1.colorts1.diamterendl; couts2.numts2.pricets2.colorts2.sizeendl; 运行结果:3、编程实现两个整数相加。程序如下:#includeusing namespace std;void main()int a,b,sum;couta; coutb;sum=a+b; coutendl;cout sum = sumendl;coutendl;运

5、行结果:4、编程实现,输入一个三位整数,能够将它反向输出。程序如下:#includeint main() int x; int a;/*百位*/ cinx; /*输入三位整数*/ coutendl; a=x%10; int b=x%100/10; int c=x/100; coutabcendl; return 0;输出结果:5、读程序写结果。综合实训数字互换实训。输入一个大于三位的整数,编一个程序,将它的十位数和百位数互换位置。程序如下:#includevoid main() int A;int a,b,c,d,e;cinA;/*五位的整数*/a=A/10000;/*万位*/b=(A%100

6、00)/1000;/*千位*/c=(A-a*10000-b*1000)/100;/*百位*/d=(A-a*10000-b*1000-c*100)/10;/*十位*/e=A%10;coutabdceendl;return;运行结果:(二)语句和函数基础实训1、根据考试成绩的等级A、B、C和D,输出对应的百分制分数段,A对应85100,B对应7084,C对应6069,D对应060。2、用for语句编程求1100之和。程序如下:#includeusing namespace std;void main()int i=1,sum=0;while(i=100)sum=sum+i;i+;printf(su

7、m=%dn,sum);输出结果:3、用for语句、while语句和递归函数三种方法计算n!。程序如下:#includeusing namespace std;void main()int i,n;long s;printf(please enter a integer:n);scanf(%d,&n);if(n=0)s=1;i=1;while(i=n) s=s*i; i+;printf(%d!=%ldn,n,s);elseprintf(Sorry! You enter a wrong number.n);运行结果:4、用for循环编程打印图形。5、编写函数,判断一个数是否是质数。6、在二维字符数

8、组中查找出现指定字符元素的个数。7、编写一个函数实现对浮点数四舍五入的功能,该浮点数通过引用参数进行传递。8、用随机函数rand,随机给出两个数,让使用程序的人求出两个数之和,可以求2次,对了则打印“真棒,算对了。”,否则显示“真遗憾,算错了”。程序如下:#include#include#includeusing namespace std;void main()int a,b,i,sum;srand(time(0);a=rand()%100;couta=aendl;b=rand()%100;coutb=b2)cout超过2次了!;coutendl;break; else if (i=2) c

9、out最后一次机会!endl; cout请输入两数之和:sum; if (sum=a+b) cout恭喜你,算对了endl; break; else cout很遗憾,你算错了endl; if(i=2&sum!=a+b) cout正确答案是:a+bendl;运行结果:两次都错的情况:有一次答对的情况:9、设计一个函数,求三个数中的最大值。10、编写程序,利用itoa函数实现整数到字符串的转换。11、编写程序,最多读入10个数,读入0表示结束。将读入的非零的数放在一个数组里,按从大到小的顺序排序后输出。12、将一个代表整型数的字符串转换为一个整型的数字。综合实训(职工信息处理函数实训)职工的信息有

10、姓名char *name、年龄 int age、工龄 int workage、性别 char sex sex=F sex=M、婚姻状况 bool marrage marrage=true magrrage=false 、级别 int grade 、工资 salary 、在职否 bool tired tired=true tired=false 。现在要进行工资的调整,规定凡是退休职工一律增加工资50元,在职15级职工的工资分别增加20、40、60、80、100元。编程实现上述工资调整。要求如下:(1)分析要存放的信息,设计合适的数据结构;(2)分析要对信息进行的操作,进行处理;(3)打印程序执

11、行前后的工资状况和级别。程序如下:#include#define N 4using namespace std;struct workerchar *name;int age;int workage;char sex; bool marrage;int grade;int wage;bool tired;void main()struct worker wor4=a,60,40,m,true,5,450,true,b,56,26,f,true,3,560,false,c,65,13,m,true,4,500,true,d,30,15,f,true,2,645,false;int i;coutb

12、efore change wage!endl; for(i=0;i4;i+)twori.agetwori.workagetwori.sextwori.marragetwori.gradetwori.wagetwori.tiredendl;i=0;while(i4)if(wori.tired=true)wori.wage=wori.wage+50;elseswitch(wori.grade)case 1:wori.wage=wori.wage+20;break;case 2:wori.wage=wori.wage+40;break;case 3:wori.wage=wo

13、ri.wage+60;break;case 4:wori.wage=wori.wage+80;break;case 5:wori.wage=wori.wage+100;break;i+; coutafter change wage!endl; for(i=0;i4;i+)twori.agetwori.workagetwori.sextwori.marragetwori.gradetwori.wagetwori.tiredendl;输出结果:(三)面向对象基本概念与类实训基础实训1、读程序写结果;2、设计一个表示猫的类,包括猫的颜色、体重、年龄等数据,具有设置猫的颜色,

14、修改和显示猫的体重、年龄等操作。设计猫类的类名为Cat,猫类有3个数据成员,颜色用字符串*color,可以存放3个汉字,体重用实型数weight表示,年龄用整型数age表示,为了数据的安全性,Cat的3个数据成员全部为私有的。对猫的属性数据的设置和修改,PutColor为设置和修改颜色,PutWeight为设置和修改体重,PutAge为设置和修改年龄,它们都设置为公有函数,还要有一个1次设置3个参数的函数SetCat。设计函数Display输出猫的信息。程序如下:#include using namespace std;class Catprivate: char *color; int ag

15、e; int weight;public: Cat(char *color,int age,int weight); changcolor(char *color,int age,int weight); void print();Cat:Cat(char *color,int age,int weight)this-age=age;this-color=color;this-weight=weight; Cat:changcolor(char *color,int age,int weight)this-age=age;this-color=color;this-weight=weight;

16、 void Cat:print() cout猫:endl; coutendl; coutt颜色:colorendl; coutt年龄:ageendl; coutt体重:weightendl; coutendl; void main()Cat c(金黄色,6,2);c.print();c.changcolor(黑白色,4,8);c.print();运行结果:设计一个表示学习成绩的类,至少包括三门课程的成绩,可以设置、显示每门课程的成绩,可以计算、显示平均成绩。设计成绩类的类名为Grade,成绩类的数据成员,应该包括学生的学号和姓名,因为可能有重名的学生,所以用学号作为唯一代表一个学生的关键字,假

17、设学号全为9个字符,用字符指针*Number表示,姓名用字符指针*Name表示,假设有3门课,分别为C+程序设计语言,用整型变量Cpp表示;计算机原理,用整型变量Computer表示;数据库,用整型变量DataBase表示。平均成绩用实型变量Average表示。为了Grade类数据的安全,数据成员全部为私有,对成绩类的属性数据用一些函数进行设置和修改,PutNo为设置和修改学号,PutName为设置和修改姓名,PutCpp为设置和修改C+程序设计语言的成绩,PutCom为设置和修改计算机原理的成绩,PutData为设置和修改数据库的成绩,还有一个同时设置所有5个参数的函数SetGrade,它们

18、都设置为公有函数。计算平均成绩的函数为Calc,设计函数Display输出成绩。有时要查看某个学生的成绩,所以设计比较学号的函数为ComNo,设计比较姓名的函数为ComName,GetCpp为读取C+程序设计语言成绩,GetCom为读取计算机原理的成绩,GetData为读取数据库的成绩,设计读取平均成绩的函数为GetAve。计算平均成绩只是在类的内部实现,所以设计为私有函数,其他函数都设计为公有函数。程序如下:#includeusing namespace std;class Gradeprivate: char *Number; char *Name; int Cpp; int Comput

19、er; int DataBase; float Average; void Calc();public: void PutNumber(char *number); void PutName(char *name); void PutCpp(int cpp); void PutComputer(int Computer); void PutDataBase(int database); void SetGrade(char *Number,char *Name,int Cpp,int Computer,int DataBase); void ComName(char *name); void

20、ComNumber(char *number); int GetCpp(); int GetComputer(); int GetDataBase(); void GetAve(); void Display();void Grade:PutNumber(char *number)this-Number=number;void Grade:PutName(char *name)this-Name=name;void Grade:PutCpp(int cpp)this-Cpp=cpp;void Grade:PutComputer(int computer)this-Computer=comput

21、er;void Grade:PutDataBase(int database)this-DataBase=database;void Grade:GetAve()Calc(); void Grade:Calc() Average=(float)(Cpp+Computer+DataBase)/3.0);void Grade:Display()cout学生的信息如下:endl;coutendl;coutNumber=Numberendl;coutName=Nameendl;coutCpp=Cppendl;coutComputer=Computerendl;coutDataBase=DataBase

22、endl;coutAverage=Averageendl;coutCpp;int Grade:GetComputer() return this-Computer;int Grade:GetDataBase()return this-DataBase;void Grade:SetGrade(char *Number,char *Name,int Cpp,int Computer,int DataBase) this-Number=Number; this-Name=Name; this-Cpp=Cpp; this-Computer=Computer; this-DataBase=DataBas

23、e;void Grade:ComNumber(char *number)if(strcmp(Number,number)=0)cout此学号重复endl;elsecout新学号创建成功endl;void Grade:ComName(char *name)if(strcmp(Name,name)=0)cout姓名有重复endl;else return ;void main()Grade a,b;a.PutNumber(5412);a.PutName(hj);a.PutCpp(60);a.PutComputer(85);a.PutDataBase(77);a.GetAve();a.Display(

24、);b.PutNumber(8778);b.PutName(fd);b.PutCpp(75);b.PutComputer(86);b.PutDataBase(90);b.GetAve();b.Display();a.ComNumber(5554);b.ComName (th);运行结果:综合实训设计一个表示整型数据的集合类,可以对集合中的数据进行添加、删除,可以判断一个整数是否在这个集合里,可以求出集合数据的多少,可以判断集合的空与满,空集合就是没有数据元素,满集合就是数据元素已经占满给出的存储单元。两个集合可以做交运算,就是将两个集合的公共数据组成一个新的集合。两个集合可以做并运算,就是将两

25、个集合的所有数据组成一个新的集合。要求如下:(1)分析集合类的数据属性要求;(2)分析集合类的操作属性要求;(3)编制集合类的接口定义;(4)实现集合类的属性函数。设计一个类,用Set来作为类名。分析类的数据成员,要实现整型数据的集合类,必须有存放整型数据的地方,最方便的是定义一个整型数组,数组名为IntArrayN,最多可以存放N个整数,还要定义一个整型数Last表示已经存放的数据元素的个数。下标小于Last的地方已经存储了数据,Last正好是可以存放新数据的第一空位置,N要设计为常数。1)添加新的数据Append,只要数组没有放满,就直接放到Last位置,再将Last增1;2)删除数据De

26、lete,如果要删除最后一个元素,只要将Last减1就行了。如果删除中间的数据,就把最后一个数据存入要删除数据的位置,然后将Last减1。3)判断一个数据是否在这个集合中IsInSet,由整数与集合中的元素进行逐个比较来实现。4)集合空Empty时,Last=0;集合满Full时,Last=N;5)两个集合的交运算InterSect,是将两个集合的公共数据组成一个新的集合;6)两个集合的并运算Union,是将两个集合的所有数据组成一个新的集合;7)Set类还要有一个初始化函数Init,给Last赋初值,Last=0;程序如下:#includeusing namespace std;const

27、int N=20;class Setprivate:int IntArrayN;int Last;public:void Init();void display();bool Empty();bool Full();void Append(int x);void Delete(int x);bool IsInSet(int x);void InterSect(Set a,Set b,Set c);void InterSect(Set b,Set c);/重载void Union(Set a,Set b,Set c);void Union(Set b,Set c);void Set:Union(

28、Set b,Set c)int i;for(i=0;iLast ;i+)c.Append(this-IntArray i);for(i=0;iIsInSet (b.IntArrayi)=false)c.Append(b.IntArray i);c.display ();void Set:Union(Set a,Set b,Set c)int i;for(i=0;ia.Last ;i+)c.Append(a.IntArray i);for(i=0;ib.Last ;i+)if(a.IsInSet (b.IntArrayi)=false)c.Append(b.IntArray i);c.displ

29、ay ();void Set:InterSect(Set b,Set c)int i;for(i=0;ib.Last;i+)if(IsInSet(b.IntArrayi)=true)c.Append(b.IntArrayi);c.display(); void Set:InterSect(Set a,Set b,Set c)int i;for(i=0;ib.Last;i+)if(a.IsInSet(b.IntArrayi)=true)c.Append(b.IntArrayi);c.display();bool Set:IsInSet(int x)int i;for(i=0;iLast;i+)i

30、f(this-IntArrayi=x)return true;return false;void Set:Delete(int x)if(this-Empty()=false)if(this-IsInSet(x)=true)if(x=IntArrayLast-1)Last=Last-1;elsefor(int i=0;iLast;i+)if(IntArrayi=x)IntArrayi=IntArrayLast-1;Last=Last-1;cout这个数不存在!endl;elsecout这个数不存在endl;elsecout无数据可以删除IntArrayLast=x;Last=Last+1;bo

31、ol Set:Full()if(Last=N)cout不能再添加数据!endl;return true;elsecout当前集合还不满!endl;return false;bool Set:Empty()if(Last=0)cout当前集合为空!endl;return true;elsecout当前集合为不空!endl;return false;void Set:Init()Last=0;void Set:display()coutLast=Lastendl;int i;for(i=0;iLast;i+)coutIntArrayit;void main()Set s;s.Init ();s.d

32、isplay ();int k;for(k=0;k10;k+)s.Append(k*100);s.display ();Set t;t.Init();t.display();t.Append(10);t.Append(200);t.Append(150);t.Append(400);t.Append(350);t.display();Set p;p.Init();s.Union (s,t,p);t.Union (s,t,p);p.Union(s,t,p);s.Union (t,p);运行结果:添加新的数据:删除数据:两个集合的交运算:两个集合的并运算:(四)对象实训基础实训读程序写结果; 见对

33、象实训1.txt 对象实训2.txt设计计算图形面积的程序,图形有圆和长方形,计算半径为15、23、37的圆和长宽分别为(32,56)、(21,45)的长方形等五个图形的面积。提示:要计算圆和长方形的面积,就要设计表示圆的类和表示长方形的类,圆类的名称为Circle,长方形的名称为Rect,圆类的Circle应该含有属性半径R、面积Area,应该有操作设置半径set(float)和计算面积 ask(),取构造函数有一个半径默认参数为1。长方形Rect应该含有属性长A和宽B,应该有操作 set(float,float)设置长A和宽B,计算面积ask(),取构造函数有2个默认参数1表示长和宽。 程

34、序如下:#include #include #define PI 3.14 using namespace std; class Shape /Shape这个类里面重载了计算面积的函数 public: float Shape:GetArea(float radious)/计算圆的面积 return float (PI*radious*radious); float Shape:GetArea(float side1, float side2, float side3)/计算三角形面积 float average=(side1+side2+side3)/2;return float (sqrt(

35、average * (average-side1) * (average-side2) * (average-side3); float Shape:GetArea(float side1, float side2)/计算长方形面积 return float (side1 * side2); ; class Triangle : public Shape public:float side1, side2 ,side3;public: Triangle() cout输入三角形三边长度:side1side2side3; ; class Circle : public Shape public:f

36、loat radious;public: Circle() cout 输入圆的半径:radious; ; class Rectangle : public Shapepublic:float side1, side2; public:Rectangle() cout输入长方形的长和宽:side1side2; ;int main()int num;cout请选择你要计算面积的图形:endl1.三角形 2.圆形 3.矩形num; switch(num) case 1: Triangle* T = new Triangle;cout三角形的面积为:GetArea(T-side1, T-side2,

37、T-side3)endl;delete T;break; case 2:Circle* C = new Circle; cout圆的面积为:GetArea(C-radious)endl;delete C; break; case 3: Rectangle* R = new Rectangle;cout长方形的面积为:GetArea(R-side1, R-side2)endl; delete R; break; default:cout请在1-3之间选择:;while (num != 1| num != 2| num != 3); return 0; 运行结果: 设计一个日期类Date,可以求昨

38、天的日期和明天的日期,输出格式为:年/月/日,编写主程序设置当前日期为2003年9月10日,显示昨天的日期和明天的日期,将日期改为2004年5月4日,显示修改后的日期。提示:类Date应该包含表示年月日的三个整型变量,成员函数有求明天日期、求昨天日期、设置日期和显示日期,还要设计一个计算当前月份天数的函数Days(),这个函数只在内部使用,所以设计为私有的。程序如下:#include using namespace std;class Dateprivate:int year,month,day;public:Date(int y=1900,int m=1,int d=1):year(y),m

39、onth(m),day(d)/构造函数void setDate(int y,int m,int d)/设置日期 year=y; month=m; day=d;void showDate()/输出日期格式 coutyear/month/dayendl;int leap()/判断是否为润年 if(year%400=0|(year%100!=0&year%4=0) return 1; else return 0;int Days()/判断当月天数 int d; switch(month) case 2: if(leap() d=29; else d=28; break; case 1: case 3

40、: case 5: case 7: case 8: case 10: case 12:d=31;break; case 4: case 6: case 9: case 11:d=30;break; return d;int isRight()/判断日期数是否合理if(year0|month12|dayDays() coutthe date data is wrong!endl;return 0;else return 1;Date Yesterday()/求昨天Date dt(year,month,day);int y1=dt.year,m1=dt.month,d1=dt.day;switch

41、(month) case 2: case 4: case 6: case 8: case 9: case 11: if(day=1)y1=year;m1=month-1;d1=31; else y1=year;m1=month;d1=day-1; break; case 5: case 7: case 10: case 12: if(day=1)y1=year;m1=month-1;d1=30; else y1=year;m1=month;d1=day-1; break; case 3: if(day=1) y1=year;m1=month-1; if(leap() d1=29; else d

42、1=28; else y1=year;m1=month;d1=day-1; break; case 1: if(day=1)y1=year-1;m1=12;d1=31; else y1=year;m1=month;d1=day-1; break; dt.setDate(y1,m1,d1);return dt;Date Tomorrow()/求明天日期 Date dt(year,month,day);int y1=dt.year,m1=dt.month,d1=dt.day;switch(month) case 1: case 3: case 5: case 7: case 8: case 10:

43、 if(day=31)y1=year;m1=month+1;d1=1; else y1=year;m1=month;d1=day+1; break; case 4: case 6: case 9: case 11: if(day=30)y1=year;m1=month+1;d1=1; else y1=year;m1=month;d1=day+1; break; case 2: if(leap()&day=29)|(!leap()&day=28) y1=year;m1=month+1;d1=1; else y1=year;m1=month;d1=day+1; break; case 12: if

44、(day=31)y1=year+1;m1=1;d1=1; else y1=year;m1=month;d1=day+1; break; dt.setDate(y1,m1,d1);return dt; ;/data类结束int main()Date date1;int y,m,d,tr=1;while(tr)coutt请输入当天日期endl;couty;coutm;coutd; date1.setDate(y,m,d);if(date1.isRight()cout当日日期; date1.showDate(); cout明日日期; date1.Tomorrow().showDate(); cout

45、昨日日期; date1.Yesterday().showDate(); cout继续下一次测试(1)或者结束(2)tr; if(tr!=1) break;return 0;输出结果:综合实训设计一个最多可以存放100个整数的类,要求这些整数按从小到大的顺序存放在类中的数组里,可以删除数组中的数据,也可以向数组中插入数据,但是要保持从小到大的顺序,可以求出数据的多少,可以判断数组的空和满,可以显示数组中的整数。当然刚生成对象时,对象中的数组没有数据,只有一个一个地向对象中插入数据。要求如下:(1)分析数组类的数据属性要求;(2)分析数组类的操作属性要求;(3)编制数组类的接口定义;(4)生成数组

46、类对象;(5)编制程序实现数组对象的插入和删除操作;程序如下:#include#include#includeconst int maxint=100;class dataint Amaxint;int last;public:data() last=0;int insert(int);int Delete(int);int IsEmpty();int IsFull();void Display(int i);void Display();int data:IsEmpty()if(last=0) return 1;else return 0;int data:IsFull()if(last=m

47、axint)return 1;else return 0;int data:insert(int x)if(IsFull()return 0; int i=0;while (ilast) if(xi)Aj=Aj-1;j-;last+;Ai=x;return 1;int data:Delete(int x)if (IsEmpty() return 0;int i=0;while (i=last)return 0;for(int j=i;jlast-1;j+)Aj=Aj+1;last-;return 1;void data:Display(int i)coutAiAiendl;void data:

48、Display()int j=0; for(int i=0;ilast;i+) couttAi; j+; if(j=8)coutendl;j=0; coutendl;void main() data obj; srand(unsigned)time(NULL); for(int i=0;i100;i+) obj.insert(rand(); obj.Display();运行结果:(五)指针与引用实训基础实训读程序写结果;设有一个整型数组A,有10个元素,输出各个元素,要求使用数组名和指针运算来实现。设计一个函数,以参数方式输入一个字符串,返回该字符串的长度。设计一个函数,比较两个字符串是否相同

49、。用指针和引用实现数的交换。对象指针遵循一般变量指针的规则。综合实训冒泡排序是一个排序程序,它将无次序的数列排成从小到大的有序数列。要求如下:(1)建成一个数组类;(2)使用指针变量指向动态数组;(3)编写成员函数完成排序;(4)编写主程序,验证结果。设该类名为List,数组变量为int *Array,数组元素个数为Count,数组存放的最大元素个数为Last。主要成员函数有普通构造函数和复制构造函数,构造函数担负申请数组存储单元和计数器Count初始化的任务。数据交换函数Change(int &p,int &q),当整型数p的值大于q的值时进行交换,数据交换函数不需要对象在外部使用,所以设置

50、为私有.排序函数Bubble,它对含有Count个元素的数组Array进行冒泡排序.录入数组元素函数Input,删除数组元素函数Delete,数组显示函数Display.私有函数Member(int)判断一个整数是否已经在数组里.还要有析构函数释放动态存储单元.在主程序中定义数组number,由用户输入数组元素的数目及它们的值,调用函数Bubble显示每次排序循环的结果.程序如下:#include using namespace std;class Listprivate:int *Array;int Count;int Last;void Change(int &p,int &q);bool

51、 Member(int x);public:List(int c);List(List &s);void Bubble();void Input(int x);void Delete(int x);List();void Display();void List:Display ()int i;for(i=0;iCount;i+)couttArrayi;List:List (int c)Last=c;Count=0;Array=new intLast;List:List(List &s)int i;Count=s.Count;Last=s.Last;Array=new intLast;for(i

52、=0;iq)temp=p;p=q;q=temp;void List:Bubble ()int i,j;for(i=Count;i=2;i-)for(j=0;jArrayj+1)Change(Arrayj,Arrayj+1);bool List:Member (int x)int i;for(i=0;iCount;i+)if(x=Arrayi)return true;return false;void List:Input(int x)if(CountLast)ArrayCount=x;Count=Count+1;elsecout数组已满,不能再插入数据!endl;void List:Delet

53、e(int x)int i;for(i=0;iCount;i+)if(x=Arrayi)Arrayi=ArrayCount-1;Count=Count-1;List:List()delete Array;void main()int c=5;List l(c);l.Input (10);l.Input (20);l.Input(30);l.Input(40);l.Input (50);l.Display ();l.Delete (20);l.Display ();coutendl;coutSort endl;l.Bubble ();l.Display ();coutendlendl;/cout

54、l.Member (50)endl;coutCopy endl;List d(l);d.Display ();运行结果:(六)继承实训基础实训读程序,写结果;见Chapter_9读程序写结果。定义一个文件名类Name,包含变量Name表示文件名。由Name类派生一个表示文件的类File,增加文件的页数page和文件的编号number。分析:File类公有继承Name类,文件名name定义为保护的,派生类可以使用,文件的页数page和文件的编号page都定义为私有的。程序如下:#include#includeusing namespace std;class Nameprivate :char

55、name85;public:Name(char n85)strcpy(name,n);void display()coutname= nameendl;class File:public Nameprivate:int pages;int number;public:File(char *n,int p,int nu):Name(n)pages=p;number=nu;void display()/coutname nameendl;Name:display();coutpages pagesendl;coutnumber numberendl;void main()Name a(语文);a.

56、display();File f(英语,100,2);f.display ();运行结果:设计一个楼房基类Building,包含变量floors表示层数、areas表示建筑面积、name表示建筑名称。建立派生类House表示居住楼,增加变量ds表示单元数。再建立派生类Office表示办公楼,增加变量cs表示公司数。分析: House类和Office类都公有继承 Building类, floors、areas都定义为保护的,派生类可以使用。而ds和cs都定义为私有。程序如下:#includeusing namespace std;class Building protected:char *na

57、me;int floor;int area;public:Building(char *na,int fl,int ar)name=na;floor=fl;area=ar;void display()coutname nameendl;coutfloor floorendl;coutarea areaendl;class House:public Buildingprivate:int ds;public:House(char *na,int fl,int ar,int d):Building(na,fl,ar)ds=d;void display()coutname nameendl;cout

58、floor floorendl;coutarea areaendl;coutds dsendl;class Office:public Building private:int cs;void main()Building b(润泽楼,3,100);b.display ();House h(梓韵楼,2,500,1);h.display ();运行结果:定义描述坐标位置的类Location,由它派生出具有显示和移动功能的点类Point,再从Point类派生出圆类Circles,在Circles类中将Location类的数据成员作为圆的圆心,求出圆的周长和面积。分析:在声明Location类时,将

59、类中表示位置的数据成员x,y声明为保护成员,这样公有派生类Point可以直接访问x,y,且Circle类是由Point类公有派生的,则Circles也可以直接访问x,y,圆类中还有数据成员r表示半径。程序如下:#includeusing namespace std;const double Pi=3.14;class Locationprotected:int x;int y;public:Location(int i,int j)x=i;y=j;class Point:public Locationpublic:void display()cout当前位置 endl;coutx=xendl;

60、couty=yendl;void move(int m,int n)x=m;y=n;cout移动以后点的位置是: endl;display();Point(int e,int g):Location(e,g);class Circle:public Pointprivate:int r;public:Circle(int e,int g,int rr):Point(e,g)r=rr;void display()cout半径rendl;cout周长2*Pi*rendl;cout面积Pi*r*rendl;void main() Point p(2,2);p.display ();p.move (3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论