《面向对象C++》实验指导书(0708)

上传人:1666****666 文档编号:37929871 上传时间:2021-11-05 格式:DOC 页数:25 大小:578KB
返回 下载 相关 举报
《面向对象C++》实验指导书(0708)_第1页
第1页 / 共25页
《面向对象C++》实验指导书(0708)_第2页
第2页 / 共25页
《面向对象C++》实验指导书(0708)_第3页
第3页 / 共25页
点击查看更多>>
资源描述
面向对象C+编撰闽江学院计算机实验教学中心印制II目 录实验一 C+简单程序设计3一、实验目的:3二、实验设备:3三、实验内容:3实验二 函数7一、实验目的:7二、实验设备:7三、实验内容:7实验三 类和对象10一、实验目的:10二、实验设备:10三、实验内容:10实验四 C+程序的结构13一、实验目的:13二、实验设备:13三、实验内容:13实验五 数组,指针与字符串16一、实验目的:16二、实验设备:16三、实验内容:16实验六 继承与派生19一、实验目的:19二、实验设备:19三、实验内容:19实验七 多态性22一、实验目的:22二、实验设备:22三、实验内容:22 实验一 C+简单程序设计一、实验目的:(1)掌握基本数据类型和表达式;(2)学会数据的输入与输出,循环控制条件的判断与选择和字定义数据类型;(3)熟悉C+简单程序设计;二、实验设备:一台PC机,Microsoft Visual studio 2005运行软件三、实验内容:1.用循环结构编写程序求自然数1到10的和; (1) 源程序代码如下:#includeusing namespace std;void main() int i(1), sum(0); do sum+=i; i+;while(i=10); coutsum=sumendl;(2)对程序进行调试,结果如下: (3) 运行结果如下图所示:2. 编程实现:输入一个图形的长和宽,输出其面积。 (1) 源程序如下:#include using namespace std;const float PI = 3.1416;void main()int iType;float radius, a, b, area;cout iType;switch(iType)case 1:cout radius;area = PI * radius * radius;cout面积为:areaendl;break;case 2:cout a;cout b;area = a * b; cout面积为:areaendl;break;case 3:cout a;area = a * a; cout面积为:areaendl;break;default:cout 不是合法的输入值!endl; (2)对程序进行调试,结果如下: (3) 运行结果如下图所示:3.输出年份,日期和具体时间(1)源程序如下:#include #include using namespace std;struct myTimeshort year;short month;short day;short hour;short minute;short second;void main()myTime time1;cout time1.year;cout time1.month;cout time1.day;cout time1.hour;cout time1.minute;cout time1.second;cout 现在是 time1.year 年 time1.month 月 time1.day 日 time1.hour 点 time1.minute 分 time1.second 秒 endl;(2)对程序进行调试,结果如下:(3) 运行结果如下图所示:四实验总结: 通过这次实验,。实验二 函数一、实验目的:(1)掌握函数的定义和调用;(2)了解函数调用的执行过程,递归调用以及函数的参数传递;二、实验设备:一台PC机,Microsoft Visual studio 2005运行软件三、实验内容:1.编写一个求x的n次方的函数; (1) 源程序代码如下:#include using namespace std;double power (double x, int n);void main(void)cout 5 to the power 2 is power(5,2) endl; /函数调用作为一个表达式出现在输出语句中。double power (double x, int n)double val = 1.0;while (n-)val *= x;return(val); (2)对程序进行调试,结果如下: (3) 运行结果如下图所示:2. 从键盘中输入两个整数,交换次序后输出。 (1) 源程序如下:#includeusing namespace std;void Swap(int& a, int& b);void main()int x(5), y(10);coutx=x y=yendl;Swap(x,y);coutx=x y=yendl;void Swap(int& a, int& b)int t;t=a;a=b;b=t; (2)对程序进行调试,结果如下: (3) 运行结果如下图所示:四实验总结: 通过这次实验。实验三 类和对象一、实验目的:(1)了解面向对象的思想,掌握类和对象的概念(2)理解构造函数,析构函数和拷贝构造函数的应用;二、实验设备:一台PC机,Microsoft Visual studio 2005运行软件三、实验内容:1.时钟类;(1) 源程序代码如下:#includeusing namespace std;class Clock/时钟类的声明public:/外部接口,公有成员函数void SetTime(int NewH=0, int NewM=0, int NewS=0);void ShowTime();private:/私有数据成员int Hour,Minute,Second;/时钟类成员函数的具体实现void Clock:SetTime(int NewH, int NewM, int NewS)Hour=NewH;Minute=NewM;Second=NewS;inline void Clock:ShowTime()coutHour:Minute:Secondendl;void main()/主函数 Clock myClock;/定义对象myClockcoutFirst time set and output:endl;myClock.SetTime();/设置时间为默认值myClock.ShowTime();/显示时间coutSecond time set and output:endl;myClock.SetTime(8,30,30);/设置时间为:myClock.ShowTime();/显示时间 (2)对程序进行调试,结果如下: (3) 运行结果如下图所示:2.Point类(1) 源程序代码如下:#include using namespace std;class Point/Point 类的声明public:/外部接口Point(int xx=0, int yy=0) X=xx;Y=yy;/构造函数Point(Point &p);/拷贝构造函数int GetX() return X;int GetY() return Y;private:/私有数据int X,Y;/成员函数的实现Point:Point(Point &p)X=p.X;Y=p.Y;cout拷贝构造函数被调用endl;/形参为Point类对象的函数void fun1(Point p)coutp.GetX()endl;/返回值为Point类对象的函数Point fun2()Point A(1,2);return A;/主程序void main()Point A(4,5);/第一个对象APoint B(A); /情况一,用A初始化B。第一次调用拷贝构造函数coutB.GetX()endl;fun1(B); /情况二,对象B作为fun1的实参。第二次调用拷贝构造函数B=fun2(); /情况三,函数的返回值是类对象,函数返回时,调用拷贝构造函数coutB.GetX()endl;(2)对程序进行调试,结果如下:(3) 运行结果如下图所示:四实验总结: 通过这次实验。实验四 C+程序的结构一、实验目的:(1)掌握类的静态函数成员的定义及使用;(2)掌握共享数组的保护以及常数据成员的运用二、实验设备:一台PC机,Microsoft Visual studio 2005运行软件三、实验内容:1. 编程实现:利用静态的私有数据成员countP对Point类的对象个数进行统计 (1) 源程序代码如下:#include using namespace std;class Point/Point类定义public:/外部接口Point(int xx=0, int yy=0) X=xx;Y=yy;countP+;/构造函数Point(Point &p);/拷贝构造函数Point() countP-; int GetX() return X;int GetY() return Y;static void GetC() cout Object id=countPendl;/静态函数成员private:/私有数据成员int X,Y;static int countP;/静态数据成员引用性说明;Point:Point(Point &p)X=p.X;Y=p.Y;countP+;int Point:countP=0;/静态数据成员定义性说明/初始化,使用类名限定void main()/主函数实现Point A(4,5);/定义对象AcoutPoint A,A.GetX(),A.GetY();A.GetC();/输出对象号,对象名引用Point B(A);/定义对象BcoutPoint B,B.GetX(),B.GetY();Point:GetC();/输出对象号,类名引用 (2)对程序进行调试,结果如下: (3) 运行结果如下图所示:2. 编程实现:运用静态数据成员作为类的成员数据 (1) 源程序如下:#includeusing namespace std;class Apublic:A(int i);void print();const int& r;private:const int a;static const int b; /静态常数据成员;const int A:b=10; /静态常数据成员在类外说明和初始化A:A(int i):a(i),r(a) /常数据成员只能通过初始化列表来获得初值void A:print() couta:b:rendl;void main()/*建立对象a和b,并以100和0作为初值,分别调用构造函数,通过构造函数的初始化列表给对象的常数据成员赋初值*/ A a1(100),a2(0); a1.print(); a2.print(); (2)对程序进行调试,结果如下:(3) 运行结果如下图所示:四实验总结: 通过这次实验。实验五 数组,指针与字符串一、实验目的:(1)掌握使用数组名作为函数参数的运用;(2)掌握如何用指针作为函数参数二、实验设备:一台PC机,Microsoft Visual studio 2005运行软件三、实验内容:1. 编程实现:计算一个矩阵每一行元素的和,并将和直接存放在每行的第一个元素中 (1) 源程序代码如下:#include using namespace std;void RowSum(int A4, int nrow) /计算二维数组A每行元素的值的和,nrow是行数for (int i = 0; i nrow; i+)for(int j = 1; j 4; j+) Ai0 += Aij; void main(void)/主函数int Table34 = 1,2,3,4,2,3,4,5,3,4,5,6;/声明并初始化数组for (int i = 0; i 3; i+)/输出数组元素for (int j = 0; j 4; j+) cout Tableij ;cout endl;RowSum(Table,3);/调用子函数,计算各行和for (int i = 0; i 3; i+)/输出计算结果 cout Sum of row i is Tablei0 endl;(2)对程序进行调试,结果如下:(3) 运行结果如下图所示:2. 编程实现:读入三个浮点数,将整数部分和消暑部分分别输出 (1) 源程序如下:#include using namespace std;void splitfloat(float x, int *intpart, float *fracpart) /形参intpart,fracpart是指针*intpart=int(x);/取x的整数部分*fracpart=x-*intpart;/取x的小数部分void main()int i,n;float x,f;coutEnter 3 float point numbers:endl;for(i=0;ix; splitfloat(x,&n,&f);/变量地址作为实参 coutInteger Part=n Fraction Part=fendl; (2)对程序进行调试,结果如下: (3) 运行结果如下图所示:四实验总结: 通过这次实验,实验六 继承与派生一、实验目的:(1)理解继承和派生;(2)掌握类型兼容规则,派生类的构造和析构函数;二、实验设备:一台PC机,Microsoft Visual studio 2005运行软件三、实验内容:1.基类BO以公有方式派生B1类,B1类再作为基类以公有方式派生出D1,基类B0中定义了 成员函数display(),在派生类中对这个成员函数进行隐藏。(1) 源程序代码如下:#include using namespace std;class B0/基类B0声明public:void display()coutB0:display()endl;/公有成员函数;class B1: public B0/公有派生类B1声明public:void display()coutB1:display()endl;/公有成员函数;class D1: public B1/公有派生类D1声明public:void display()coutD1:display()display();/对象指针-成员名void main()/主函数B0 b0;/声明B0类对象B1 b1;/声明B1类对象D1 d1;/声明D1类对象B0 *p;/声明B0类指针p=&b0;/B0类指针指向B0类对象fun(p);p=&b1;/B0类指针指向B1类对象fun(p);p=&d1;/B0类指针指向D1类对象fun(p); (2)对程序进行调试,结果如下: (3) 运行结果如下图所示:2.在三个B1,B2和B3其中只有一个默认的构造函数,其余两个基类的成员只是一个带有参数的构造函数,派生出类C,在类C中增三个私有对象成员,并在所以基类中加入析构函数。(1) 源程序代码如下:#include using namespace std;class B1/基类B1声明public:B1(int i) coutconstructing B1 iendl;/B1的构造函数B1() coutdestructing B1 endl;/B1的析构函数;class B2/基类B2声明public:B2(int j) coutconstructing B2 jendl;/B2的构造函数B2() coutdestructing B2 endl;/B2的析构函数;class B3/基类B3声明public:B3()coutconstructing B3 *endl;/B3的构造函数B3() coutdestructing B3 endl;/B3的析构函数;class C: public B2, public B1, public B3/派生类C声明public:C(int a, int b, int c, int d):B1(a),memberB2(d),memberB1(c),B2(b)/派生类构造函数定义private:B1 memberB1;B2 memberB2;B3 memberB3;void main()C obj(1,2,3,4); (2)对程序进行调试,结果如下:(3) 运行结果如下图所示:四实验总结:通过本次实验,实验七 多态性一、实验目的:(1)掌握面向对象的多态性,虚函数成员,析构虚函数以及抽象类;(2)学会使用虚析构函数,实现多态。二、实验设备:一台PC机,Microsoft Visual studio 2005运行软件三、实验内容:1. 编程实现:虚函数成员,这个是由7-4“类型兼容性规则举例”改进的,在基类BO中将原来成员display()申明为虚函数,其他部分都没有做任何修改。在使用基类类型的指针时,它指向哪个派生类的对象,就可以通过它访问那个对象的同名虚成员函数。 (1) 源程序代码如下:#include using namespace std;class B0/基类B0声明public:/外部接口virtual void display()coutB0:display()endl;/虚成员函数;class B1: public B0/公有派生public:void display()coutB1:display()endl;/虚成员函数;class D1: public B1/公有派生public:void display()coutD1:display()display();void main()/主函数B0 b0,*p;/声明基类对象和指针B1 b1;/声明派生类对象D1 d1;/声明派生类对象p=&b0;fun(p);/调用基类B0函数成员p=&b1;fun(p);/调用派生类B1函数成员p=&d1;fun(p);/调用派生类D1函数成员 (2)对程序进行调试,结果如下: (3) 运行结果如下图所示:2. 编程实现:虚析构函数举例,没有使用虚析构函数的程序: (1) 源程序如下:#include using namespace std;class Basepublic:Base() cout Base destructorn;class Derived: public Basepublic:Derived();Derived();private:int *i_pointer;Derived:Derived()i_pointer=new int(0); Derived:Derived() cout Derived destructorn;delete i_pointer;void fun(Base* b) delete b; void main()Base *b=new Derived();fun(b); (2)对程序进行调试,结果如下:(3) 运行结果如下图所示:四实验总结: 通过这次实验,。24
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸下载 > CAD图纸下载


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!