面向对象程序设计实验指导书.docx

上传人:b****2 文档编号:658297 上传时间:2023-04-29 格式:DOCX 页数:29 大小:153.80KB
下载 相关 举报
面向对象程序设计实验指导书.docx_第1页
第1页 / 共29页
面向对象程序设计实验指导书.docx_第2页
第2页 / 共29页
面向对象程序设计实验指导书.docx_第3页
第3页 / 共29页
面向对象程序设计实验指导书.docx_第4页
第4页 / 共29页
面向对象程序设计实验指导书.docx_第5页
第5页 / 共29页
面向对象程序设计实验指导书.docx_第6页
第6页 / 共29页
面向对象程序设计实验指导书.docx_第7页
第7页 / 共29页
面向对象程序设计实验指导书.docx_第8页
第8页 / 共29页
面向对象程序设计实验指导书.docx_第9页
第9页 / 共29页
面向对象程序设计实验指导书.docx_第10页
第10页 / 共29页
面向对象程序设计实验指导书.docx_第11页
第11页 / 共29页
面向对象程序设计实验指导书.docx_第12页
第12页 / 共29页
面向对象程序设计实验指导书.docx_第13页
第13页 / 共29页
面向对象程序设计实验指导书.docx_第14页
第14页 / 共29页
面向对象程序设计实验指导书.docx_第15页
第15页 / 共29页
面向对象程序设计实验指导书.docx_第16页
第16页 / 共29页
面向对象程序设计实验指导书.docx_第17页
第17页 / 共29页
面向对象程序设计实验指导书.docx_第18页
第18页 / 共29页
面向对象程序设计实验指导书.docx_第19页
第19页 / 共29页
面向对象程序设计实验指导书.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

面向对象程序设计实验指导书.docx

《面向对象程序设计实验指导书.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计实验指导书.docx(29页珍藏版)》请在冰点文库上搜索。

面向对象程序设计实验指导书.docx

面向对象程序设计实验指导书

《面向对象程序设计》实验指导书

实验报告应包括的内容:

班级,姓名,学号

一、实验目的:

二、实验内容:

三、源程序

四、实验结果

一、实验基本步骤

•打开MicrosoftVisualC++6.0,选择[File]一〉[New]—〉[File]—〉选择C++SourceFile,在File里输入要保存的文件名;Location:

选择要保存的文件路径,将默认的路径改为以自己名字命名的文件夹,建立一源程序文件。

如图1所示。

图1建立源文件

•按照所给的程序代码输入到计算机中,用[File]一〉[SaveAll]存盘,或用

存盘。

检查源程序,并编译运行,如图2所示。

编译过程中如有语法错误,可参考最下端提示信息。

如图3所示。

图2保存、编译源程序

图3错误提示信息

说明:

在C++程序中如果使用了系统提供的一些功能(如cin和cout),就必须在程序的首部首先声明相关的包含这些功能的头文件(如iostream.h),否则,系统无法找到实现这些功能的代码。

在C++语言中一个头文件就是一个类库,类与类的预定义对象就包含在其中。

所以,在使用这些类库中所包含的预定义对象时,必须在程序首部加以声明。

注意:

如运行完一个程序,再建立一个新的源程序时,可将以前运行完的程序注释掉,如图4所示。

如果不选用此方法,要重新建立源程序,应将当前工作区关闭,而不能只关闭当前源程序文件。

关闭工作区方法:

[File]—〉CloseWorkspace。

如图5所示。

工作区关闭以后,再按开始的方式选择[File]一〉[New]—〉[File]—〉选择C++SourceFile。

图4注释程序界面

图5关闭工作区界面

实验内容

实验一C++程序设计基础练习

一、实验目的

1、学习编写简单的C++程序,并掌握C++程序的基本格式与规范。

2、理解C++程序结构的特点。

3、学习C++程序基本的输入输出操作。

4、学习数据类型常量和变量以及修饰符的使用。

5、学习基本的函数定义与调用方法。

6、学习作用域运算符的功能与基本使用方法。

7、学习内存的动态分配与释放方法。

8、学习引用的概念,掌握引用的基本使用方法。

二、试验内容

(一)程序填空

1、输入并运行所给的下述参考程序,并将程序中的注释部分也输入计算机,体会和理解程序的基本格式规范。

参考程序1

#include

intadd(inta,intb);

intmain()

{

intx,y,sum;

cout<<"Entertwonumbers:

"<<'\n';

//在下画线处填上语句,完成用cin读入x和y

_______________

_______________

sum=add(x,y);

cout<<"Thesumis:

"<

return0;

}

intadd(inta,intb)

{

//在下画线处填上语句,完成计算a与b的和并返回之

_________________

_________________

_________________

}

2、调试和运行参考程序2和参考程序3,掌握输入输出及其格式控制的基本使用方法。

参考程序2

#include

intmain()

{

charname[20];

cout<<”Hello,yourname:

”;

//在下画线处填上语句,完成将字符串输入到数组name中

____________

//在下画线处填上语句,完成将name数组用cout输出

____________

return0;

}

参考程序3

#include

voidmain()

{

intx=25;

//在画线处填上语句,将变量x的值分别以十六进制、十进制、八进制输出

___________________________________________________

}

3、调试和运行参考程序4和参考程序5,理解内置函数与函数重载的概念与基本使用方法。

参考程序4

#include

inlineintdoub(intx)

{

//在下画线处填上语句,用于返回x的2倍

_____________

}

intmain()

{

for(inti=1;i<3;i++)

cout<

cout<<”i+2doubledis”<

}

参考程序5

#include

intmul(intx,inty)//mul函数1

{returnx*y;}

intmul(intx,inty,intz)//mul函数2

{returnx*y*z;}

voidmain()

{

inta=3,b=4,c=5;

//在下画线处填上语句,用于调用mul函数1

cout<

//在下画线处填上语句,用于调用mul函数2

cout<

}

运行结果:

 

4、调试和运行参考程序6和参考程序7,并观察输出结果,体会和理解作用域运算符的概念与基本使用方法。

参考程序6

#include

intavar=10;

main()

{

//在下画线处填上语句,定义局部变量avar并赋予初始值25

__intavar;____________

__avar=25;___________

cout<<"avaris"<

return0;

}

运行结果:

 

参考程序7

#include

intavar;

main()

{

intavar;

//在下画线处填上语句,将局部变量avar赋值25

___avar=25;____________

//在下画线处填上语句,将全局变量avar赋值10

____:

:

avar=10;____________

//在下画线处填上语句,输出局部变量avar的值

cout<<"localavaris:

"<<_avar_____<

//在下画线处填上语句,输出全局变量avar的值

cout<<"g1obalavaris:

"<<_:

:

avar_______<

return0;

}

运行结果:

5、调试和运行参考程序8和参考程序9,并观察输出结果,体会和理解内存动态分配的概念与new、delete运算符的基本使用方法。

参考程序8

#include

main()

{

int*p;//声明一个整型指针变量p

//在下画线处,用new关键字动态分配一个int型存储区,并将首地址赋给p

______________

*p=10;

cout<<*p;//在下画线处填上语句,用于撤销指针p,释放p指向的存储空间

________________

return0;

}

运行结果:

参考程序9

#include

main()

{

int*p;

//在画线处填上语句,用new关键字动态分配一个int型存储区,并将首地址赋给p

_____________________

if(!

p)

{

cout<<"allocationfailure\n";

return1;

}

//在下画线处填上语句,将p所指向的存储区赋值20

________________

cout<<*p;

//在下画线处填上语句,用于撤销指针p,释放p指向的存储空间

________________

return0;

}

(二)程序设计题

1、用三种循环语句来分别实现输出10~50之间的3的倍数。

2、从键盘上读入两数,比较两个数的大小,并按从小到大的次序输出。

3、输出1到100的偶数,一行5个。

4、打印出所有的“水仙花数”。

所谓“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身。

例如,153是一个“水仙花数”,因为153=13+53+33。

5、打印一个三角形的1~9的乘法表。

6、写一个程序,100~200间的所有素数。

7、给出一个百分制的成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。

90分以上为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。

8、求

(即求1!

+2!

+3!

+4!

+……+10!

)。

9、求1+

……

的和。

10、有一分数序列

……,求出这个数列的前20项之和。

11、一个10个整数的数组(34,91,83,56,29,93,56,12,88,72),找出最小数和其下标,并在主函数中打印最小数和下标。

12、编程求矩阵的加法:

13、编写一个程序,用来分别求2个整数、3个整数、2个双精度数和3个双精度数的最大值。

要求使用重载函数来完成。

14、编写一个程序,计算并输出Fibonacci数列的前n项的值,n是用户由键盘的输入值。

实验二类与对象

一、实验目的

1、学习类与对象的定义,掌握类与对象的使用方法。

2、学习数据成员与成员函数的访问方式,理解构造函数和析构函数的定义与执行过程,学会构造函数的重载方法。

3、掌握数组与指针的定义与使用方法,理解数组与指针的存储分配与表示。

4、掌握用指针和引用向函数传递参数。

5、掌握静态数据成员和静态成员函数的使用。

6、理解友元与友元函数的作用与使用方法。

二、实验内容

1、下面是一个计算器类的定义,请完成该类成员函数的实现。

classCounter

{

public:

Counter(intnumber);

voidincrement();//给原值加1

voiddecrement();//给原值减1

intgetValue();//取得计数器值

intprint();//显示计数

private:

intvalue;

};

2、根据注释语句的提示,实现类Date的成员函数。

classDate

{

public:

voidprintDate();//显示日期

voidsetDay(intd);//设置日的值

voidsetMonth(intm);//设置月的值

voidsetYear(inty);//设置年的值

private:

intday,month,year;

};

intmain()

{

DatetestDay;

testDay.setDay(5);

testDay.setMonth(10);

testDay.setYear(2014);

testDay.printDate();

return0;

}

3、建立类cylinder,cylinder的构造函数被传递了两个double值,分别表示圆柱体的半径和高度。

用类cylinder计算圆柱体的体积,并存储在一个double变量中。

在类cylinder中包含一个成员函数vol(),用来显示每个cylinder对象的体积。

4、构建一个类book,其中含有两个私有数据成员qu和price,建立一个有5个元素的数组对象,将qu初始化为1~5,将price初始化为qu的10倍。

显示每个对象的qu*price值。

5、修改上题,通过对象指针访问对象数组,使程序以相反的顺序显示对象数组的qu*price值。

6、构建一个类Stock,含字符数组stockcode[]及整型数据成员quan、双精度型数据成员price。

构造函数含3个参数:

字符数组na[]及q、p。

当定义Stock的类对象时,将对象的第一个字符串参数赋给数据成员stockcode,第2个和第3个参数分别赋给quan和price。

未设置第2个和第3个参数时,quan的值为1000,price的值为8.98。

成员函数print()使用this指针,显示对象内容。

7、参考课本例子,建立一个源程序文件,在此文件中建立一个新的类,将新建的类命名为Rect。

classRect

{

public:

intArea_int();

doubleArea_double();

Rect(doublelength,doublewidth);

Rect(intlength,intwidth);

virtual~Rect();

private:

intnLength;

intnWidth;

doubledLength;

doubledWidth;

};

【要求】

(1)向Rect类中添加数据成员及成员函数,并完善成员函数的功能。

如设计一个Area_int()函数,计算边长为整型的长方形的面积;设计一个Area_double()函数,计算边长为double型的长方形的面积。

(2)重载构造函数。

一种构造函数用整型变量记录长方形的长和宽,另一种构造函数用double型记录。

(3)体现对象的构造和析构过程。

例如,在构造函数中用cout<<”Iamtheconstructor!

”<

(4)在main()函数中定义两个Rect类的对象,一个对象用实例实现(就像定义普通的变量一样),另一个对象用指针实现(利用关键字new,给指针分配内存空间)。

并用不同的参数,以调用不同的构造函数体现构造函数的重载。

8、声明一个Student,在该类中包括一个数据成员score(分数)、两个静态数据成员total_score(总分)和count(学生人数);还包括一个成员函数account()用于设置分数、累计学生的成绩之和、累计学生人数,一个静态成员函数sum()用于返回学生的成绩之和,另一个静态成员函数average()用于求全班成绩的平均值。

在main()函数中,输入某班学生的成绩,并调用上述函数求出全班学生的成绩之和和平均分。

9、设计一个用来表示直角坐标系的Location类,在主程序中创建类Location的两个对象A和B,要求A的坐标点在第3象限,B的坐标点在第2象限,分别采用成员函数和友元函数计算给定两个坐标点之间的距离,要求按如下格式输出结果:

A(x1,y1),B(x2,y2)

Distance=d

其中:

x1、y1、x2、y2为指定的坐标值,d为两个坐标点之间的距离。

10、使用C++的string类,将5个字符串按逆转后的顺序显示出来。

例如,逆转前的5个字符串是:

Germany、Japan、American、British、France

按逆转后的顺序输出字符串为:

France、British、American、Japan、Germany

11、设计一个矩阵类Matrix,有分配空间和对矩阵赋值的功能,将这个矩阵类的对象作为参数传送到函数Mul(Matrixa,Matrixb),用Mul(Matrixa,Matrixb)函数实现两个Matrix对象相乘的运算。

实验三派生类与继承

一、实验目的

1、学习类的继承,能够定义和使用类的继承关系。

2、学习派生类的声明与定义方法。

3、掌握类的定义和对象的声明。

4、熟悉公有派生和私有派生的访问特性。

5、掌握派生类构造函数和析构函数的执行顺序。

6、掌握利用访问声明调整基类成员在派生类中的访问属性。

二、试验内容

1、下面的程序可以输出ASCII字符与所对应的数字的对照表。

修改下列程序,使其可以输出字母a到z(或任意两个字符间)与所对应的数字的对照表。

classtable

{

public:

table(intp)

{

i=p;

}

voidascii(void);

protected:

inti;

};

voidtable:

:

ascii(void)

{

intk=1;

for(;i<127;i++)

{

cout<

if((k)%12==0)

cout<<"\n";

k++;

}

cout<<"\n";

}

classder_table:

publictable

{

public:

der_table(intp,char*m):

table(p)

{

c=m;

}

voidprint(void);

protected:

char*c;

};

voidder_table:

:

print(void)

{

cout<

table:

:

ascii();

}

intmain()

{

der_tableobl(32,"ASCIIvalue---char");

obl.print();

return0;

}

提示:

修改后的主程序为:

intmain()

{

der_tableob('a','z',"ASCIIvalue---char");

ob.print();

return0;

}

2、已有类Time和Date,要求设计一个派生类Birthtime,它继承类Time和Date,并且增加一个数据成员Childname用于表示小孩的名字,同事设计主程序显示一个小孩的出生时间和名字。

classTime

{

public:

Time(inth,intm,ints)

{

hours=h;

minutes=m;

seconds=s;

}

voiddisplay()

{

cout<<"出生时间:

"<

}

protected:

inthours,minutes,seconds;

};

classDate

{

public:

Date(intm,intd,inty)

{

month=m;

day=d;

year=y;

}

voiddisplay()

{

cout<<"出生年月:

"<

}

protected:

intmonth,day,year;

};

3、编写一个学生和教师的数据输入和显示程序。

学生数据有编号、姓名、性别、年龄、系别和成绩,教师数据有编号、姓名、性别、年龄、职称和部门。

要求将编号、姓名、性别、年龄的输入和显示设计成一个类Person,并作为学生类Student和教师类Teacher的基类。

4、给出下面的基类:

classarea

{

protected:

doubleheight;

doublewidth;

public:

area(doubleh,doublew)

{

height=h;

width=w;

}

virtualdoublegetarea()=0;

};

【要求】

(1)建立基类area的俩个派生类rectangle与isosceles,让每一个派生类都包含一个函数getarea(),分别用来返回矩形与三角形的面积。

用构造函数对height与width进行初始化。

(2)写出主程序,用来求height与width分别为10.0与5.0的矩形面积,以及求height与width分别为4.0与6.0的三角形面积。

(3)要求通过使用基类指针访问虚函数的方法(即运行时的多态性)分别求出矩形和三角形面积。

5、编写一个程序,递归调用被继承的基类成员函数,实现求素数的功能。

实验四多态性

一、实验目的

1、掌握运算符重载的基本方法。

2、掌握友元运算符函数和成员运算符函数的使用方法及两者之间的不同。

3、学习虚函数的定义与使用方法。

4、了解静态多态性和动态多态性。

5、学习使用虚函数和继承实现动态多态性。

二、试验内容

1、编写一个程序,要求:

(1)生明一个类Complex(复数类),定义类Complex的两个对象c1和c2,对象c1通过构造函数直接指定复数的实部和虚部(类私有数据成员为double类型:

real和imag)为2.5及3.7,对象c2通过构造函数直接指定复数的实部和虚部为4.2及6.5;

(2)定义友元运算符重载函数,它以c1、c2对象为参数,调用该函数时能返回两个复数对象相加操作;

(3)定义成员函数print,调用该函数时,以格式“real+imagi”输出当前对象的实部和虚部,例如:

对象的实部和虚部分别是4.2和6.5,则调用print函数输出格式为:

4.2+6.5i;

(4)编写主程序,计算出复数对象c1和c2相加结果,并将其结果输出。

2、编写一个程序,其中设计一个时间类Time,用来保存时、分、秒等私有数据成员,通过重载操作符“+”实现两个时间的相加。

要求将小时范围限制在大于等于0,分钟范围限制在0~59分,秒钟范围限制在0~59秒。

提示:

时间类Time的参考框架如下:

classTime

{

public:

Time(inth=0,intm=0,ints=0);//构造函数

Timeoperator+(Time&);//运算符重载函数,实现两个时间的相加

voiddisptime();//显示时间函数

private:

inthours,minutes,seconds;

};

3、用友元运算符函数或成员运算符函数,重载运算符“+”、“-”、“*”,实现对实验二中实现的矩阵类的对象的加、减、乘法。

4、编写一个程序,用于进行集合的和、并和交运算。

例如输入整数集合{9,5,4,3,6,7}和{2,4,6,9},计算出他们进行集合的并、差和交运算后的结果。

【提示】

(1)可以用一下表达式实现整数集合的基本运算:

s1+s2两个整数集合的并运算

s1-s2两个整数集合的差运算

s1*s2两个整数集合的交运算

(2)参考以下Set类的框架,用于完成集合基本运算所需的各项功能。

classSet

{

public:

Set();

voidinput(intd);//向集合中添加一个元素

intlength();//返回集合中的元素个数

intgetd(inti);//返回集合中位置i的元素

voiddisplay();//显示集合的所有元素

Setoperator+(Sets1);//成员运算符重载函数,实现集合的并运算

Setoperator-(Sets1);//成员运

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2