面向对象程序设计C实验资料.docx

上传人:b****6 文档编号:8592755 上传时间:2023-02-01 格式:DOCX 页数:42 大小:255.79KB
下载 相关 举报
面向对象程序设计C实验资料.docx_第1页
第1页 / 共42页
面向对象程序设计C实验资料.docx_第2页
第2页 / 共42页
面向对象程序设计C实验资料.docx_第3页
第3页 / 共42页
面向对象程序设计C实验资料.docx_第4页
第4页 / 共42页
面向对象程序设计C实验资料.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

面向对象程序设计C实验资料.docx

《面向对象程序设计C实验资料.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计C实验资料.docx(42页珍藏版)》请在冰豆网上搜索。

面向对象程序设计C实验资料.docx

面向对象程序设计C实验资料

面向对象程序设计(C++)实验

软件工程08

说明:

在C++程序中如果使用了系统提供的一些功能(如cin和cout),就必须在程序的首

部首先声明相关的包含这些功能的头文件(如iostream.h),否则,系统无法找到实现这些功

能的代码。

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

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

//参考程序1

//sum.cpp

#include

intadd(inta,intb);

intmain()

{

intx,y,sum;

cout<<"Entertwonumbers:

"<<'\n';

cin>>x;

cin>>y;

sum=add(x,y);

cout<<"Thesumis:

"<

}

intadd(inta,intb)

{intc;

c=a+b;

returnc;

}运行结果:

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

//参考程序2

#include

intmain()

{charname[20];

cout<<”Hello,yourname:

”;

cin>>name;

cout<

return0;

}

运行结果:

//参考程序3

#include

intmain()

{

intx=25;

cout<

运行结果:

(3)按照参考程序1的输入与调试方法,输入、检查、调试和运行参考程序5。

理解内置函数与函数重载的概念与基本使用方法。

2和参考程序

4和参考程序

//参考程序4#includeinlineintdoub(intx){returnx*2;}intmain(){for(inti=1;i<3;i++)

cout<

}

运行结果:

//参考程序5#includeintmul(intx,inty){returnx*y;}intmul(intx,inty,intz){returnx*y*z;}voidmain(){inta=3,b=4,c=5;cout<

(4)

6和参考程序

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

//参考程序6#include

intavar=10;

main()

{

intavar;

avar=25;

cout<<”avaris”<

return0;

}

运行结果:

//参考程序7

#includeintavar;

main(){

intavar;

avar=25;//局部变量avar

:

:

avar=10;//全局变量avar

cout<<”localavar=”<

:

avar<

}

运行结果:

(5)按照参考程序1的输入与调试方法,输入、检查、调试和运行参考程序8和参考程

序9,并观察输出结果,体会和理解内存动态分配的概念与new、delete运算符的基本使用

方法。

//参考程序8

#includemain()

{

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

//动态分配一个int型存储区,并将首地址赋给p

//撤销指针,释放p指向的存储空间

int*p;p=newint;*p=10;cout<<*p;deletep;return0;

}运行结果:

//参考程序9

#include

main()

{

int*p;

p=newint;

if(!

p)

{

cout<<”allocationfailure\n”return1;

}

*p=20;cout<<*p;deletep;return0;

}

运行结果:

4.实验结论:

实验二类和对象

(1)

(2)

(3)

(4)

(5)2.

2.1按要求分析程序指出程序运行的结果:

1)分析下面的程序,并给出程序运行的结果:

#includeclasschange

{charc1,c2;public:

voidset(chara){c2=((c1=a)-32);}

voidprint()

{cout<

voidmain(){changea,b;

a.set('a');

b.set('b');

a.print();

b.print();

}运行结果:

程序分析:

2)分析下面的程序,并给出输出结果:

#includeclasspair

{charc1,c2;public:

voidset(charb){c1=1+(c2=b);}unsignedwhere_am_I(){return((unsigned)this);}voidprint()

{cout<

voidmain(){paira,b,c;

a.set('A');

b.set('B');

c.set('C');

a.print();

cout<<"isat"<

b.print();

cout<<"isat"<

c.print();

cout<<"isat"<

运行结果:

程序分析:

2.2编写并调试程序:

1)下面是一个类的测试程序,给定主函数,请写出类的定义,构成一个完整的程序,使执行程序后输出结果为:

88-32=56

给定的主函数为:

voidmain()

{

Tstt;

t.init(88,32);t.print();

}

2)编程分析

由主函数可知,要创建的类名为Tst,—个类对象为t,类中含有两个公有成员函数init()和

print(),利用函数init()对两个私有成员数据赋值,即为减数与被减数的数值,为了程序的实现需要定义第三个成员数据作为减法之差。

3)源程序

#includeclassTst

{

};

voidmain()

{

Tstt;t.init(88,32);t.print();

}

4)运行结果

88-32=56

5)调试情况分析

3.实验结论:

 

实验三类的应用

1.实验目的:

1)

2)

3)

掌握类及成员的定义方法;掌握对象的创建方法;掌握对象数组、对象指针及*this指针的使用。

2.实验内容:

2.1分析下面的程序,指出错误的地方原来的程序如下:

ClassCSample{inta=2.5;

Public:

Intb;

VoidPrint(){cout<

A=x;

Y=b;

}

Voidmain()

{

CSampleSam1,Sam2;

Sam1.Set(2,3);

Sam2.Set(5,6);

Sam1.Print();

Sam2.Print();

Cout<

Cout<

修改后的程序如下:

#includeclasscsample

{

}

intmain()

{

csamplesam1,sam2;

sam1.Set(2,3);

sam2.Set(5,6);

sam1.Print();

sam2.Print();

cout<

cout<

}

程序运行的结果:

a+b=5a+b=11

7

2.2编写并调试程序:

1)按下面要求编程定义一个描述学生基本情况的类,数据成员包括姓名、学号、英语、数学、计算机成绩。

成员函数包括设置姓名、学号和三门课程的成绩、输出数据、以及求平均值。

设计主函数,在主函数里调用设置“姓名、学号和三门课程的成绩”的成员函数设置各数据调用输出数据成员函数,实现各数据的输出;调用求平均值的成员函数,求三门课的平均成绩,并输出显示。

程序如下:

#include

classstudent

};

voidmain()

{

}

运行结果:

2)按下面要求编程定义一个满足下列要求的类CDate;

a.有三个成员数据:

年、月、日;

b.有设置日期的成员函数;

c.有用格式“月/日/年”输出日期的成员函数;

d.有对当前日期加一天的成员。

设计主函数,在主函数里创建对象;调用设置日期的成员函数,设置当天的日期;调用输出日期的成员函数输出当天日期;调用对当前日期加一天的成员函数,然后再调用输出日期的成员函数,输出第二天的日期。

程序如下:

#includeclassCDate

{

}

voidmain()

{}运行结果:

3.有一个类说明如下:

Classfun

{intI,j;

Public:

Ints,k;

VoidSetData(int,int,int,int);

Voidprint();

};

要求:

a.完成函数SetData(int,int,int,int)的定义,该函数用于设置各成员数据;完成函数voidprint()的定义;该函数用于输出各成员数据;

b.设计主函数,在主函数里定义两个对象:

Funs1,s2;

c.在主函数里调用SetDataO成员函数,设置各个对象的数据,调用print()成员函数输出数

据成员函数,实现各对象的数据的输出。

程序如下:

#include

classfun{inti,j;

public:

ints,k;

voidSetData(int,int,int,int);

voidprint();

};

voidfun:

:

SetData(inta,intb,intc,intd){}

voidfun:

:

print()

{}

intmain()

{

funs1,s2;

s1.SetData(1,2,3,4);

s2.SetData(5,6,7,8);

s1.print();

s2.print();

return0;

}

运行结果:

3.实验总结:

1、实验目的及要求:

1)掌握普通函数重载的方法

2)掌握成员函数重载的方法

2、实验内容:

2.1分析下面程序,指出程序运行的结果

#include

classListClass

{int*List;

unsignednMax;

unsignednElem;

public:

voidInit(intn=10)

{List=newint[n];

nMax=n;

nElem=0;

}

intElem(int);

int&Elem(unsignedn){returnList[n];}

unsignedElem(void){returnnElem;}

unsignedMax(void){returnnMax;}

voidPrint(void);

intGetElem(inti)

{if((i>=0)&&(i<=nElem))returnList[i];

elsereturn0;

}

voidDestroy(void){delete[nMax]List;}

};

intListClass:

:

Elem(intelem)

{

if(nElem

{List[nElem++]=elem;

returnnElem;

}

Else

{int*list;

list=newint[nMax+1];

for(inti=0;i

delete[nMax]List;

nMax++;

List=list;

List[nElem++]=elem;

returnnElem;

}

}

voidListClass:

:

Print(void)//输出数组内容

{for(inti=0;i

}

voidmain(void){ListClasslist,list1;list.Init(10);list1.Init(20);

for(inti=0;i<10;i++)list1.Elem(i);

cout<<"线性表cout<<"线性表cout<<"线性表cout<<"线性表list1.Print();

list的元素的个数为:

"<

"<

的元素的个数为:

"<

"<

list1

list1

list1.Elem(3u)=100;cout<<"现在线性表list1.Elem(20);

list1.Elem(200);cout<<"现在线性表list.Destroy();

list1.Destroy();

}

list1中的第三个值为:

"<

list1中的最后一个元素为:

"<

运行结果:

2.2按下面的要求编写并调试程序:

1)使用函数重载的方法定义两个重名函数,分别求出整型数的两点间距离和实型数的两点间

距离。

程序如下:

运行结果:

2)定义一个Cpoint类,用成员函数的重载实现上题的功能。

并编写主函数测试。

程序如下:

实验结果:

 

 

3)使用重载的方法编写一个求整数、和双精度数的平方数的类。

并用一个主函数进行测试。

程序如下:

#includeclassSquar

{

};

voidmain()

{

Squarc;

cout<<"2的平方是:

"<

(2)<

"<

"<

运行结果:

3.实验总结:

实验五构造函数与析构函数

1、

1)

2)

3)2、实验内容:

2.1分析程序指出程序运行的结果:

实验目的:

掌握构造函数和析构函数定义方法;掌握构造函数的重载、具有默认值的构造函数的使用方法;加深对构造函数的特殊用途的理解。

1)分析下面程序中的对象传递,写出输出结果。

#include

Usingstd:

:

cout;

Usingstd:

:

endl;

classCylinder

{

public:

Cylinder(){}

Cylinder(doubler,doubleh);

voidsetcylinder(doubler,doubleh);

doublegetradius(){returnradius;}

doublegetheight(){returnheight;}

doublevolume();

doublesurface_area();

private:

doubleradius;

doubleheight;

};

constdoublePI=3.1415926;

Cylinder:

:

Cylinder(doubler,doubleh)

{

radius=r;

height=h;

}

voidCylinder:

:

setcylinder(doubler,doubleh)

{

radius=r;

height=h;

}

doubleCylinder:

:

volume()

{

doublevol;

vol=PI*radius*radius*height;

returnvol;

}

doubleCylinder:

:

surface_area()

{

doublearea;

area=2*PI*radius*height+2*PI*radius*radius;

returnarea;

}

voidmain()

{

Cylindercylinder1(7.0,12.0),cylinder2;

cylinder2.setcylinder(12.3,18.7);

cout<<"theradiusofcylinder1is:

\t"<

cout<<"theheightofcylinder1is:

\t"<

cout<<"thevolumeofcylinder1is:

\t"<

cout<<"thesurfaceareaofcylinder1is:

\t"<

\t"<

\t"<

cout<<"thevolumeofcylinder2is:

\t"<

cout<<"thesurfaceareaofcylinder2is:

\t"<

}

运行结果:

2)分析下面的程序,指出程序的错误。

#include#include

classSample

{

inti;

public:

intj;

Sample(intx)

{

i=x;//cout<<"i="<

}

~Sample()

{

exit

(1);

cout<<"撤消"<

}

};

voidmain()

{

Samplea1(10),a2(20);

exit

(1);

cout<<"撤消"<

}

3)将下面的程序补充完整

#includeclasstest

{

private:

intnum;

doublef1;

public:

test();

test();getint(){returnnum;}doublegetfloat(){returnf1;}

};

test:

:

test()

{

cout<<"默认初始化"<

cout<<"调用构造函数1"<

}test:

:

test(

{

cout<<"初始化"<

cout<<"调用构造函数2"<

}

voidmain()

{

testa;

testb(2,5.5);

}

2.2编写并调试程序编写一个实现两个数相减的类的测试程序,请写出类的定义,构成一个完整的程序,要求调用类的构造函数和析构函数时均有明确的输出信息。

#include

Usingstd:

:

cout;

Usingstd:

:

endl;classCha

{

inta,b;

public:

Cha(int,int);

voidprint();

};

Cha:

:

Cha(intx,inty){}

voidCha:

:

print()

{

}

voidmain()

{

Chat(88,32);

t.print();

}

程序运行结果:

3.实验总结:

实验六对象成员

1、实验目的及要求

1)理解对象成员的概念

2)掌握对象成员的初始化方法

3、实验内容

1分析调试程序指出程序运行的结果

1)分析下面程序中对象传递,写出输出结果.#include

classA

{

inti;

public:

A(intx)

{i=x;}

intget()

{returni;}

};

intcube(Aa)

{returna.get()*a.get();}

voidmain()

{

Aa1(10),a2(20);

cout<

cout<

}

实验结果:

2)分析对象成员的调用,写出程序结果

#include

#include

classB

{

private:

inta,b;public:

B(){}B(inti,intj);voidshowb();};

classA

{private:

Bc;public:

A(

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

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1