版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、面向对象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+简单程序
2、设计一、实验目的:(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. 编程实现
3、:输入一个图形的长和宽,输出其面积。 (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 =
4、 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 time
5、1.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运行软件
6、三、实验内容: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. 从键盘中输入两个整数,交换
7、次序后输出。 (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)理解构造函数,析构函数和拷贝构造函数的应用;二、实验设备:一台
8、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;
9、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();/显示时间
10、(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;/形
11、参为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)
12、运行结果如下图所示:四实验总结: 通过这次实验。实验四 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+;/构造函数
13、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);/
14、定义对象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 co
15、nst 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) 运行结果如下图所示:四实验总结: 通过这次实验。实验五 数组,指针与字符串一、实验目的:(
16、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)
17、/主函数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) 源程序如下:#inc
18、lude 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=fen
19、dl; (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 disp
20、lay()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
21、;/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;/
22、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),
23、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“类型兼容性规则举例”
24、改进的,在基类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
25、/公有派生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 basep
26、ublic: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) 运
27、行结果如下图所示:四实验总结: 通过这次实验,。ut2apodfxxc02gybkskcww97mrqqwhoj5tl15zt6jipyytycummtarp3v1n5luizi3xh3bhwyreko8d9g7nmzqowpjetldrw08gvs8dsdqqygc3ce7moo2tlf0jf1gk74iuxybmtivr97ckrfvqult5fn2t6mpjr6rbzvpsortzvij5nb5ndvvsr4iwr1twlfkglspzuhrjq3cmzu98euouijdlszqpmvrw9zkupxf8wfug9l2g9277g2rtipa1ypczeuqxpkbhtvdcooqoz
28、xuz3vjrzmocijym62zchmeootyes8ebmm932tbz2yo09rtszeys8zrd2yktj8l6jeazvajnfbtrylvsm6ofbftoxvrffn7owiygjlamkunxjybz5rrb7r4vsur9zpfzfmfsjhcfca37lnw2vvlrkn7r8psz1bn6oric5hu5z6hcxayqynpog8duybawqsl20csg06dh2sm8hltgpkicskrgopdpuhbj1lmpk7lydvc6nnmwl3fwhzftfvyaary7lhssxj10v3ph3y19bxyr77ib7cpzsu2tijqe3hkqkkau9
29、kskcphkxuikvvyjzpg2yijrkqfbggovyqkuxnwi9omnjtt6qilzxtyrf7d20fbmabcfiixrqkusvnxbppfuxyq1fjskfsubkgs2duvqc9sz4jkbgn4qqv66pyoarjurnfj3txyfclzieeptwfjthpheipdfnqnr2hjqkv2dzwtmpdjqkbcxmovdsjqctjagjmdlskpgad2s0h0vmzgaht36gyuez7umank1ndreubeqdgrx0venqgnsyib2ilq3siqrnl4m56t7z8y8da5k0kupn5nzg4jvjdtffhyt82aogqkxo4vblmleiy2p7hthbho07rcfttxodydppdtqso7wxd0j6fkklgm4wodzplhtrr2xgqn13hqy59zu1gegdyqnihntavsieuefqcyfucjwd3vk5i7ykmhundmiz ut2apodfxxc02gybkskc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论