程序设计与问题求解ii实验指导书v1.0_第1页
程序设计与问题求解ii实验指导书v1.0_第2页
程序设计与问题求解ii实验指导书v1.0_第3页
程序设计与问题求解ii实验指导书v1.0_第4页
程序设计与问题求解ii实验指导书v1.0_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

程序设计与问题求解II实验指导书程序设计与问题求解II教改项目组编2011年3月目录实验一数组、结构体和函数综合编程3一、实验目的3二、实验内容3三、实验结果与分析5实验二递归程序设计6一、实验目的6二、实验内容6三、实验结果与分析7实验三类与对象(一)8一、实验目的8二、实验内容8三、实验结果与分析11实验四类与对象(二)12一、实验目的12二、实验内容12三、实验结果与分析14实验五继承与多态15一、实验目的15二、实验内容15实例讲解18三、实验结果与分析20实验六运算符重载和模板类21一、实验目的21二、实验内容21三、实验结果与分析22实验七流与文件操作编程23一、实验目的23二、实验内容23三、实验结果与分析23实验八链表编程24一、实验目的24二、实验内容24三、实验结果与分析25实验一数组、结构体和函数综合编程一、实验目的1复习数组,结构体和函数的相关知识;2掌握利用数组存储数据和进行编程的方法;3进一步掌握函数的编写。二、实验内容1学生成绩统计从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,输入结束,分别实现下列功能(1)统计不及格人数并打印不及格学生名单;(2)统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单;(3)统计各分数段的学生人数及所占的百分比。注将成绩分为六个分数段,60分以下为第0段,6069为第1段,7079为第2段,8089为第3段,9099为第4段,100分为第5段。编程要求1较好的用户输入输出提示信息2使用子函数来实现上述各个功能,并且要使用结构体数组来实现,该结构体中包括学生学号和成绩3最好不要使用全局变量提示TYPEDEFTAGSTUDENTLONGNUM/学生学号FLOATSCORE/学生分数STUDENT供参考的函数原型如下/函数功能从键盘输入一个班学生某门课的成绩及其学号当输入成绩为负值时,输入结束函数参数存放学生信息的STUDENT结构体数组函数返回值学生总数/INTREADSCORESTUDENTSTU/函数功能统计不及格人数并打印不及格学生名单函数参数存放学生信息的STUDENT结构体数组整型变量N,存放学生总数函数返回值不及格人数/INTGETFAILSTUDENTSTU,INTN/函数功能计算全班平均分函数参数存放学生信息的STUDENT结构体数组,整型变量N,存放学生总数函数返回值平均分/FLOATGETAVERSTUDENTSTU,INTN/函数功能统计成绩在全班平均分及平均分之上的学生人数并打印其学生名单函数参数存放学生信息的STUDENT结构体数组,整型变量N,存放学生总数函数返回值成绩在全班平均分及平均分之上的学生人数/INTGETABOVEAVERSTUDENTSTU,INTN/函数功能统计各分数段的学生人数及所占的百分比函数参数存放学生信息的STUDENT结构体数组,整型变量N,存放学生总数函数返回值无/VOIDGETDETAILSTUDENTSTU,INTN2成绩排名次某班期末考试科目为数学(MT)、英语(EN)和物理(PH),有最多不超过30人参加考试。要求(1)计算每个学生的总分和平均分;(2)按总分成绩由高到低排出成绩的名次;(3)打印出名次表,表格内包括学生编号、各科分数、总分和平均分;(4)任意输入一个学号,能够查找出该学生在班级中的排名及其考试分数编程要求1较好的用户输入输出提示信息2使用子函数来实现上述各个功能3必须用结构体数组实现提示设计好存放学生信息的结构体,方便编程。用函数编程实现计算每个学生的总分;用函数编程实现按总分由高到低对学生成绩排序用函数编程实现查找学号为K的学生在班级中的排名名次及相关成绩等信息,找不到时返回1值三、实验结果与分析将源程序、运行结果和分析以及实验中遇到的问题和解决问题的方法,写在实验报告上。实验二递归程序设计一、实验目的1学习递归程序的一般设计方法;2了解和熟练多参数的递归函数的使用;3掌握用递归程序设计方法解决实际问题。二、实验内容1求游戏人员的年龄有5个人围坐在一起,问第五个人多大年纪,他说比第4个人大2岁;问第4个人,他说比第3个人大2岁;问第3个人,他说比第2个人大2岁;问第2个人,他说比第1个人大2岁。第一个人说自己10岁,问第5个人多大年纪。提示此程序为递归问题,递归公式为01NAGEN2计算最大公约数利用计算最大公约数的三条性质,用递归方法计算两个整数的最大公约数。性质1如果XY,则X和Y的最大公约数与XY和Y的最大公约数相同,即GCD,XY性质2如果YX,则X和Y的最大公约数与X和YX的最大公约数相同,即,性质3如果XY,则X和Y的最大公约数与X值和Y值相同,即GCD,XY注意上述两个代码的编写都非常简单,在代码编写成功后,需要自己再回忆一下代码的编写过程,复习以前学过的内容,学习代码的调试。3整数划分问题将正整数N表示成一系列正整数之和NN1N2NK,其中N1N2NK1,K1。正整数N的这种表示称为正整数N的划分。求正整数N的不同划分个数。例如正整数6有如下10种不同的划分51;42,411;33,321,3111;222,2211,21111;111111。前面的几个例子中,问题本身都具有比较明显的递归关系,因而容易用递归函数直接求解。在本例中,如果设PN为正整数N的划分数,则难以找到递归关系,因此考虑增加一个自变量将最大加数N1不大于M的划分个数记作QN,M。可以建立QN,M的如下递归关系。如要求解6的整数划分,即是求Q6,5其中N6,M5。编程要求(1)编程求出任意10以内的整数的所有可能划分总数。(必做)(2)选作部分打印输出6的所有划分形式。三、实验结果与分析将源程序、运行结果和分析以及实验中遇到的问题和解决问题的方法,写在实验报告上。1,1,MNQMNQ实验三类与对象(一)一、实验目的1初步掌握面向对象的思想,类的封装,多文件项目;2掌握类的概念、类的成员的概念和类的封装性;3掌握类对象的定义;4理解类的成员的访问控制的含义,公有、私有和保护成员的区别;5初步掌握用类和对象编制基于对象的编程;6学习检查和调试基于对象的程序;7掌握工程文件的编译方法;8逐步从面向过程编程转到面向对象编程。二、实验内容1、验证题目将下面的程序正确划分到不同的文件中,编译链接运行,观测运行结果与期望是否相符。时间类/MYTIMEHIFNDEFMYTIME_H_DEFINEMYTIME_H_INCLUDEUSINGNAMESPACESTDCLASSTIMEPRIVATEINTHOURSINTMINUTESPUBLICTIMETIMEINTH,INTM0VOIDADDMININTMVOIDADDHRINTHVOIDRESETINTH0,INTM0TIMESUMCONSTTIMEVOIDSHOWCONSTENDIF/MYTIMECPPINCLUDE“MYTIMEH“TIMETIMEHOURSMINUTES0TIMETIMEINTH,INTMHOURSHMINUTESMVOIDTIMEADDMININTMMINUTESMHOURSMINUTES/60MINUTES60VOIDTIMEADDHRINTHHOURSHVOIDTIMERESETINTH,INTMHOURSHMINUTESMTIMETIMESUMCONSTTIMESUMMINUTESMINUTESTMINUTESSUMHOURSHOURSTHOURSSUMMINUTES/60SUMMINUTES60RETURNSUMVOIDTIMESHOWCONSTCOUTUSINGNAMESPACESTDINCLUDE“MYTIMEH“INTMAINTIMEATIMEB5,40TIMEC2,55COUTUSINGNAMESPACESTDCLASSTIMEINTHOURINTMINUTEINTSECVOIDSET_TIMEVOIDSHOW_TIMETIMETINTMAINSET_TIMESHOW_TIMERETURN0VOIDSET_TIMECINTHOURCINTMINUTECINTSECVOIDSHOW_TIMECOUTUSINGNAMESPACESTDCLASSBOXPUBLICBOXINT10,INT10,INT10BOXBOXBOXINTVOLUMEPRIVATEINTHEIGHTINTWIDTHINTLENGTHBOXBOXBOXWIDTHBWIDTHLENGTHBLENGTHCOUTINCLUDEUSINGNAMESPACESTDCLASSPOINTDOUBLEXDOUBLEYPUBLICPOINTDOUBLEA,DOUBLEBXAYBFRIENDDOUBLEDISTPOINTA,POINTBDOUBLEDISTPOINTA,POINTBRETURNSQRTAXBXAXBXAYBYAYBYVOIDMAINPOINTP11,2POINTP25,2COUTINCLUDECLASSSHAPEPUBLICVIRTUALFLOATAREAVOID0/虚函数VIRTUALVOIDSETDATAFLOAT,FLOAT00/虚函数CLASSTRIANGLEPUBLICSHAPEFLOATW,H/三角形边长为W,高为HPUBLICTRIANGLEFLOATW0,FLOATH0WWHHFLOATAREAVOIDRETURNWH/2/定义虚函数VOIDSETDATAFLOATW,FLOATH0WWHH/定义虚函数CLASSRECTANGLEPUBLICSHAPEFLOATW,H/矩形边长为W,高为HPUBLICRECTANGLEFLOATW0,FLOATH0WWHHFLOATAREAVOIDRETURNWH/定义虚函数VOIDSETDATAFLOATW,FLOATH0WWHH/定义虚函数CLASSSQUAREPUBLICSHAPEFLOATS/正方形边长SPUBLICSQUAREFLOATA0SAFLOATAREAVOIDRETURNSS/2/定义虚函数VOIDSETDATAFLOATW,FLOATH0SW/定义虚函数CLASSCIRCLEPUBLICSHAPEFLOATR/圆的半径为RPUBLICCIRCLEFLOATR0RRFLOATAREAVOIDRETURN31415926RR/定义虚函数VOIDSETDATAFLOATW,FLOATH0RW/定义虚函数CLASSCOMPUTESHAPES/指向基类的指针数组PUBLICCOMPUTESNEWSHAPE4/给几何图形设置参数S0NEWTRIANGLE3,4S1NEWRECTANGLE6,8S2NEWSQUARE65S3NEWCIRCLE55FLOATSUMAREAVOIDCOMPUTEVOIDSETDATAINTN,FLOATA,FLOATB0/ASNSETDATAA,B/BCOMPUTECOMPUTE/释放动态分配的存储空间FORINTI0IAREA/通过基类指针实现多态性RETURNSUMVOIDMAINVOIDCOMPUTEACOUTUSINGSTDCOUTUSINGSTDENDLCLASSBASECLASSPUBLIC/VIRTUAL/VOIDPRINT/请去掉注释后查看结果有何不同,并思考为什么/VIRTUAL只能在声明时使用,在定义时CPP中不能有COUTPRINT/VIRTUALAAAVIRTUALAAABASECLASS_P/父类指针指向子类对象BASECLASS_PPRINT/VIRTUALBBBVIRTUALAAA解释OVERRIDE与OVERLOADOVERRIDE可以理解为覆盖,重定义,重写,是指子类可以写一个函数原型包括参数列表,返回值类型与父类一模一样的成员方法,OVERLOAD可以理解为重载,它不涉及类的层次,它是指可以通过参数列表的不同同时写出多个同名函数上述的BASECLASSPRINTSUBCLASSPRINT均可以属于OVERRIDEVIRTUAL的含义不用VIRTUAL的话,父类指针指向子类对象时,它会根据指针的类型确定调用父类还是子类的方法若用VIRTUAL的话,父类指针指向子列对象时,它会根据指针所指对象的类型而非指针的类型来确定该调用子类还是父类的方法三、实验结果与分析将源程序、运行结果和分析以及实验中遇到的问题和解决问题的方法,写在实验报告上。实验六运算符重载和模板类一、实验目的1进一步了解运算符重载的概念和使用方法;2掌握几种常用的运算符重载的方法;3了解转换构造函数的使用方法;4掌握模板的定义和应用方法二、实验内容1、模板类将冒泡排序中的用于比较之后的交换部分(即数组AI和AI1比较后,若后继元素比前面的元素大,则它们要互换位置)用函数SWAPT,T模板实现。并写一个主函数分别进行字符数组、整形数组和浮点形数组的数据进行测试。2、运算符重载定义一个复数类,通过重载运算符,/,直接实现二个复数之间的乘除运算。编写一个完整的程序,测试重载运算符的正确性。要求加法“”用成员函数实现重载,减法“”用成员函数实现重载。乘法“”用友元函数实现重载,除法“/”用成员函数实现重载。两复数相乘的计算公式为ABICDIACBDADBCI两复数相除的计算公式为ABI/CDIACBD/CCDDBCAD/CCDDI复数类及运算符重载函数可定义为CLASSCOMPLEXFLOATREAL,IMAGEPUBLICCOMP

温馨提示

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

评论

0/150

提交评论