面向对象程序设计实验Word文档下载推荐.docx

上传人:b****6 文档编号:18129198 上传时间:2022-12-13 格式:DOCX 页数:27 大小:21.13KB
下载 相关 举报
面向对象程序设计实验Word文档下载推荐.docx_第1页
第1页 / 共27页
面向对象程序设计实验Word文档下载推荐.docx_第2页
第2页 / 共27页
面向对象程序设计实验Word文档下载推荐.docx_第3页
第3页 / 共27页
面向对象程序设计实验Word文档下载推荐.docx_第4页
第4页 / 共27页
面向对象程序设计实验Word文档下载推荐.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

面向对象程序设计实验Word文档下载推荐.docx

《面向对象程序设计实验Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计实验Word文档下载推荐.docx(27页珍藏版)》请在冰豆网上搜索。

面向对象程序设计实验Word文档下载推荐.docx

12.3,3.4,7.8>

-----------------------------------------------------①

cout<

<

"

x1="

x1<

endl;

x2="

x2<

d1="

d1<

d2="

d2<

--------------------------------------------------------②

return1;

问题一:

上述程序的输出结果是什么?

问题二:

用的是哪个函数?

答:

调用的函数是

问题三:

②处的输出结果为什么是d2=12,而不是d2=12.3?

因为①处调用的是整型函数,d2在此函数中被转换为整型,小数点后面被删除.

2.理解下面的程序并运行,然后回答问题.

int*p1=newint;

-----------------------------------------------------①

int*p2=newint<

0>

-----------------------------------------------------②

char*p3=newchar[10];

-----------------------------------------------------③

①、②、③处动态申请内存分别代表什么意思?

①new动态分配存放一个整数的内存空间,并将其首地址赋给指针变量p1;

②new动态分配存放一个整数的内存空间,并对其初始化赋值为0,并将其首地址赋给指针变量p2;

③new动态分配存放10个字符型数组元素的内存空间,并将其首地址赋给指针变量p3.

该程序存在什么不合理的地方?

.

程序结束时没有将分配的空间释放,应该使用delete函数释放内存.

3.理解下面的程序并运行,然后回答问题.

voidswap<

inta,intb>

inttemp=a;

a=b;

b=temp;

int*a,int*b>

inttemp=*a;

*a=*b;

*b=temp;

inti=5;

intj=10;

Beforeswap:

i="

i<

j="

j<

swap<

i,j>

Afterthefirstswap:

&

i,&

j>

Afterthesecondswap:

输出结果是什么?

①处函数调用不能实现两个数的交换,而②可以,原因是什么?

①处调用的函数只是交换了局部变量a和b,并没有改变i和j的值;

②处调用的函数使用了引用形参,i和j的值随着此处调用的函数中a和b的对换而对换.

②处调用的是哪个函数?

1.2.2程序设计

1.定义两个重名函数,分别求出两点间平面距离和空间距离.

#include<

iostream>

cmath>

usingnamespacestd;

intdistance<

intx1,inty1,intx2,inty2>

doubledis;

dis=sqrt<

x1-x2>

*<

+<

y1-y2>

dis<

returndis;

intx1,inty1,intx2,inty2,intz1,intz2>

z1-z2>

voidmain<

inta;

inti,j,k,l,q,w,e,r,t,y;

请输入平面两点坐标:

cin>

i>

k>

l;

a=distance<

i,j,k,l>

请输入空间两点坐标"

q>

w>

e>

r>

t>

y;

q,w,e,r,t,y>

2.设计一个函数:

exch<

当调用exch<

a,b,c>

时,将a赋值给b,b赋值给c,c赋值给a,要求采用引用的方式来实现.

voidexch<

int&

m,int&

n,int&

p>

inttemp=p;

p=n;

n=m;

m=temp;

inta=1,b=2,c=3;

a="

a<

b="

b<

c="

c<

return0;

1.3思考题

1.自己设计一个程序,测试指向常量的指针,常指针,指向常量的常指针之间的区别.

inta=10;

intconst*p=&

a;

*p<

intb=20;

我们可以改变指针变量p所指向的内容,而不能改变p的地址空间,如添加上p=&

b;

我们就会发现编译错误!

指向常量的指针const——int*p,特点是指针所保存的地址可以改变,然而指针所指向的值却不可以改变.同理,当添加*p=b时,会发生编译错误!

指向常量的常指针

constintconst*p特点是指针所保存的地址不可变,指针所指向的数值也不可变.

2.编写一个函数,实现两个字符串变量的交换.

voidExchg2<

char*m,char*n>

{

chartmp=*m;

*m=*n;

*n=tmp;

}

voidmain<

chara='

q'

charb='

p'

b="

Exchg2<

a,&

b>

cout<

实验三类和对象—构造函数与析构函数

3.1实验目的

1.理解this指针的作用和用法;

2.掌握构造函数的定义和作用;

3.掌握构造函数的使用;

4.掌握拷贝构造函数的定义和使用;

5.掌握构造函数的重载;

6.掌握析构函数的定义和使用.

3.2实验内容

3.2.1程序阅读

1.理解下面的程序并运行,然后回答后面的问题.

classCPoint

public:

voidSet<

intx,inty>

voidPrint<

private:

intx;

inty;

};

voidCPoint:

:

Set<

x=x;

y=y;

Print<

x="

x<

y="

y<

CPointpt;

pt.Set<

10,20>

pt.Print<

以上程序编译能通过吗?

如果不能,原因是什么?

能通过编译.

以上程序的运行结构是否正确,如果不正确,分析为什么,如何改正?

结果不正确,因为Set函数中的形参与类中的相同产生错误,改为voidCPoint:

intm,intn>

2.理解下面的程序并运行,然后回答后面的问题.

classCPerson

CPerson<

intage;

char*name;

CPerson:

voidCPerson:

name="

name<

age="

age<

CPersonps<

23,"

X三"

ps.Print<

以上程序存在三个错误,在不改变主函数内容的前提下,试改正该程序.

string>

intm,stringn>

age=m;

name=n;

stringname;

3.2.2程序设计

1.设计实现一个CPoint类,满足以下要求:

a.该类包含两个整型成员变量x〔横坐标〕和y〔纵坐标〕,以与一个输出函数Print<

用来输出横坐标和纵坐标,要求不可以在类的外部直接访问成员变量;

b.可以采用没有参数的构造函数初始化对象,此时的成员变量采用默认值0;

c.可以采用直接输入参数的方式来初始化该类的成员变量;

ioamanip>

classCPoint{

voidprint<

CPoint<

{x=0;

y=0;

point<

intx1,inty1>

intGetX<

{returnx;

intGetY<

{returny;

print<

setw<

6>

CPoint:

x=x1;

y=y1;

{CPointp;

p.print<

p.point<

1,2>

p.print<

p.GetX<

3.3思考题

1.设计一个CStudent〔学生〕类,并使CStudent类具有以下特点:

a.有学生##、学号、程序设计、信号处理、数据结构三门课程的成绩;

b.全部信息由键盘输入;

c.通过成员函数统计学生平均成绩,当课程数量增加时,成员函数无须修改仍可以求取平均成绩;

d.输出学生的基本信息、各科成绩与平均成绩;

e.学生对象用链表存储;

f.统计不与格学生人数.

iomanip.h>

string.h>

#defineN3

#defineM3

classCStudent

voidsetstudent<

char*name,char*sn,floatscore[N]>

voidshowstudent<

charSname[10];

charSno[8];

floatScore[3];

floatAvg;

floatSum;

intcount;

voidCStudent:

setstudent<

inti;

floatSum=0.0;

intcount=0;

strcpy<

Sname,name>

Sno,sn>

for<

i=0;

N;

i++>

Score[i]=score[i];

count++;

3;

Sum=Sum+Score[i];

Avg=Sum/count;

showstudent<

Sname<

16>

Sno<

10>

Score[i]<

12>

Avg<

{

inti,j,k=0;

charname[10],no[8];

floatscore[N];

j=1;

=M;

j++>

pleaseinputstudent["

]name"

name;

]no"

no;

]score"

score[i];

CStudentS1;

student["

]name"

no"

15>

程序设计"

信号处理"

数据结构"

avg"

S1.setstudent<

name,no,score>

S1.showstudent<

if<

score[i]<

60>

k++;

不与格人数:

k<

实验五派生与继承—单基派生

5.1实验目的

1.理解继承的概念;

2.理解公有派生、私有派生和保护派生;

3.理解单基派生类中构造函数和析构函数的执行顺序.

5.2实验内容

5.2.1程序阅读

#include"

iostream.h"

classCBase

CBase<

inta>

a>

protected:

classCDerive:

publicCBase

CBase:

intb;

CDerived;

d.print<

CBaseb;

b.print<

以上程序有两个错误,试指出来,并改正之.

派生类CDerive中没有定义CDerive〔〕,主函数中没有给d,b对象赋值.

CDerive<

inta,intc>

b=c;

CDerived<

1,3>

CBaseb<

2>

basestructure"

~CBase<

basedestructure"

inta,intb,intc>

b<

c<

c>

derivestructure"

~CDerive<

derivedestructure"

b.a="

b.a<

intc;

1,2,3>

以上程序的输出结果是什么,为什么?

程序错误,不能输出结果."

〞这个语句中调用了基类中的保护参数a.

①处语句执行完后,d.b.a的值为多少?

b.a=2.

实验七多态性—函数与运算符重载

7.1实验目的

1.理解静态联编和动态联编的概念;

2.掌握成员函数方式运算符重载;

3.掌握友元函数方式运算符重载;

4.掌握++、--、=运算符的重载.

7.2实验内容

7.2.1程序阅读

classCComplex

CComplex<

real=0;

imag=0;

real=x;

imag=y;

intreal;

intimag;

CComplexoperator+<

CComplexobj1>

-----------------------------------------------①

CComplexobj2<

real+obj1.real,imag+obj1.imag>

returnobj2;

CComplexobj1<

100,30>

20,30>

CComplexobj;

obj=obj1+obj2;

------------------------------------------------------------------②

cout<

obj.real<

obj.imag<

endl;

①处的运算符重载,为什么该函数的返回值要设计成CComplex类型?

运算符重载函数的返回值与其操作类的类型相同.

②处的运算符重载函数调用就相当于"

obj=operator+<

obj1,obj2>

〞,请问CComplex类中的运算符重载函数为什么只有一个参数?

因为另一个参数是隐含调用,是CComplex类的当前对象.它通过this指针隐含地进行传递.

real=0.0;

imag=0.0;

floatx,floaty>

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

当前位置:首页 > 高等教育 > 艺术

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

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