C 实验1-类和对象_第1页
C 实验1-类和对象_第2页
C 实验1-类和对象_第3页
C 实验1-类和对象_第4页
C 实验1-类和对象_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C试验1-类和对象

试验一类和对象试验课程名:

面对对象程序设计(C++)专业班级:

学号:

姓名:

试验时间:

试验地点:

指导老师:

一、试验目的和要求(D理解类和对象的概念,

驾驭声明类和定义对象的方法。

(2)驾驭构造函数和析构函数的实现方法。

(3)初步驾驭运用类和对象编制C++程序。

(4)驾驭对象数组、对象指针和string类的运用方法。

(5)驾驭运用对象、对象指针和对象引用作为函数参数的方

法。

(6)驾驭类对象作为成员的运用方法。

(7)驾驭静态数据成员和静态成员函数的运用方法。

(8)理解友元的概念和驾驭友元的运用方法。

二、试验内容1.输入下列程序〃test4T.cpp

#includeiostreamusingnamespacestd;classCoordinate

{public:Coordinate(intxl,intyl){x=xl;y=yl;}

Coordinate(Coordinatep);"Coordinate(){coutDestructoris

calleded\n;}intgetx(){returnx;}intgety(){returny;}

private:intx,y;};Coordinate::Coordinate(Coordinatep)

{x=p.x;y=p.y;coutcopy-initializationConstructouis

called\n;}intmain(){Coordinatepl(3,4);Coordinate

p2(pl);Coordinatep3=p2;coutp3=(p3.getx(),p3.gety())\n;

return(0);}(1)写出程序的运行结果。

(2)将Coordinate类中带有两个参数的构造函数进行修

改,在函数体内增加下述语句:

coutConstructoriscalled.\n;写出程序的运行结果,

并说明输出结果。

(3)按下列要求进行调试:

在主函数体内,添加下列语句:

Coordinatep4;Coordinatap5(2);调试程序时会出现什

么错误?为什么?如何对已有的构造函数进行适当修改?(4)

经过以上第(2)步知第(3)步的修改后,结合运行结果分析:

创建不同的对象时会调用不同的构造函数。

解答如下:

①程序运行结果:

②程序修改如下:

//test4-l.cppftincludeiostreamusingnamespacestd;

classCoordinate{public:Coordinate(intxl,intyl=5)

{x=xl;y=yl;}Coordinate(){coutConstructoris

called.\n;}Coordinate(Coordinatep);^Coordinate()

{coutDestructoriscalleded\n;}intgetx(){returnx;}

intgety(){returny;}private:intx,y;};

Coordinate::Coordinate(Coordinatep){x=p.x;y=p.y;

coutcopy-initializationConstructouiscalled\n;}intmain()

{Coordinatepl(3,4);Coordinatep2(pl);Coordinatep3=p2;

coutp3=(p3.getx(),p3.gety())\n;cout姓名:

王婷,学号:

201140410340endl;coutConstructoriscalled.\n;

return(0);)运行结果如下:

说明输出结果:

在编写的程序中有coutcopy-initializationConstructou

iscalled\n;执行主函数时,在主函数中定义对象pl,并传进两

个参数,系统自动调用有两个参数的构造函数,给x,y赋值后

执行cout语句输出Constructoriscalled.③出现的错误:

错误缘由:

错误1是Coordinata提示是没有定义,错误2是系统错

误在定义P5之前遗漏分号,错误3是p5没有定义。

没有默认构造函数,没有定义一个参数的构造函数,没有声

明Coordinata类。

但是该类中有了自定义构造函数,在建立对象p4,却没有

给出实参,从而系统无默认构造。

1123727291各行、各列以及对角线值的和都

是64.【提示】求4*4魔方的一般步骤如下:

(1)设置初始魔方的起始值和相邻元素之间的差值。

例如上述魔方的初始魔方的起始值(first)和相邻元素之间

的差值(step)分别为:

first二1step=2(2)设置初始魔方元素的值。

例如上述魔方的初始魔方为:

135791113151719

212325272931(3)生成最终魔方。

方法如下:

①求最大元素值与最小元素值的和sum,该实例的sum是:

1+31=32②用32减去初始魔方全部对角线上元素的值,

然后将结果放在原来的位置,这样就可求得最终魔方。

本例最终魔方如下:

313525921191517

131123727291本题的魔方类magic的参

考框架如下:

classmagic{public:voidgetdataO;

voidsetfirstmagic0;voidgeneratemagic();

voidprintmagicO;private:intm[4][4];intstep;

intfirst;intsum;};解答如下①编写源代码如下:

#includeiostreamusingnamespacestd;classmagic{int

m[4][4];intstep;intfirst;intsum;public:magic()

{sum=O;step=O;first=O;}voidgetdateO;void

setfirstmagic();voidgeneratemagic();void

printmagic();};voidmagic::getdate(){coutinputthemagic

firstnumandstepnumend1;cinfirststep;}void

magic::setfirstmagic(){for(inti=0;i4;i++)for(int

j=0;j4;j++)m[i][j]=first+step*(4*i+j);}void

magic::generatcmagic(){sum+=m[0][0]+m[3][3];for(int

i=0;i4;i++){m[i][i]=sum-m[i][i];

m[i][3-i]=sum-m[i][3-i];}}voidmagic::printmagic()

{for(inti=0;i4;i++){for(intj=0;j4;j++)

coutm[i][j]\t;coutendl;}}intmain(){magicdemo;

demo,getdate();demo,setfirstmagic();

demo,goneratemagic();demo,printmagic();return0;}②

运行结果:

③结果分析:

此代码魔方设置起始值firstnum及相邻元素差值stepnum,

再输入即可。

3.运用C++的string类,将5个字符串按逆转后的依次

显示出来。

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

GermanyJapanAmericaBritainFrance按逆转后的依次输

出字符串是:

FranceBritainAmericaJapanGermany角军答如下①

编写源代码如下:

#includeiostreamusingnamespacestd;#includemath,h

classLocation{public:Location(double,double);

doubleGetx(){returnx;}doubleGety()

{returny;}doubledistance(Location);

Location(){}frienddoubledistance

(Location,Location);private:doublex,y;};

doubledistance(Locationtempi,Locationtemp){return

(sqrt(pow(tempi,x-temp.Getx(),2.0)+pow(tempi,y-temp.Gety(),

2.0)));}Location::Location(doublex,doubley){this-x=x;

this-y=y;}doubleLocation::distance(Locationtemp)

{return

(sqrt(pow(this-x-temp.Getx(),2.0)+pow(this-y-temp.Gety(),2.

0)));}intmain(){LocationA(-2.,-3.),B(-3.,3.);

double

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论