版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年心理健康AI陪伴机器人产品商业计划书
- 2026年心理健康跨学科融合教育方案
- 血液科贫血危重处理流程
- 精神病症状学基础讲座
- 疼痛管理在癌症患者中的应用措施
- 妇产科产后恶露检查流程
- 幽门螺栓杆菌科普
- 皮肤科湿疹治疗方案分享
- 痴呆症患者义务监护流程
- 晚期肝癌疼痛管理措施
- 2026江苏事业单位统考泰州市泰兴市招聘79人笔试参考题库及答案解析
- 2026西咸某国有企业电力设计人员招聘(23人)笔试参考题库及答案解析
- 2026广西贺州市从“五方面人员”中选拔乡镇领导班子成员67人笔试备考题库及答案解析
- 2026年广东广州市高三一模高考语文试卷试题(含答案)
- 2026九年级上语文开放题答题方法
- 2026年河北衡水市城市投资控股集团有限公司公开招聘人员7名笔试模拟试题及答案解析
- 铝合金门窗及幕墙施工方案
- (25格)舒尔特方格练习题 儿童专注力训练(共19份每日一练)
- 学校内部控制六大业务工作职责及岗位职责说明书
- 2026人教版数学三年级下册全册教学课件
- 企业绿色回收体系制度
评论
0/150
提交评论