您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 面向对象程序设计-c++实验指导书
面向对象实验指导书编制人:江南适用:09网络编制时间:2010-1-30实验一VC++6.0开发环境及简单程序设计(4学时)一、实验目的1.熟悉VisualC++6.0的开发环境,学习用VisualC++6.0编写标准的C++控制台程序。2.学会编写简单的C++程序,包括基本数据类型,运算符与表达式,基本控制结构,简单输出。3.观察头文件的作用。.h以及usingnamespacestd;4.学会使用VC++6.0开发环境中的debug调试功能:单步执行、设置断点、观察变量值。掌握函数的定义和调用方法。5.练习重载函数的使用。6.练习通过动态内存分配实现动态数组,并体会指针在其中的作用;二、实验任务1.使用VisualC++建立一个非图形化的标准C++程序,编译、运行以下程序,比较两个程序的差别:#includeiostreamusingnamespacestd;voidmain(){coutHello!\n;coutWelcometoc++!\n;}#includeiostream.hvoidmain(){coutHello!\n;coutWelcometoc++!\n;}2.用do-while语句编程,求自然数1~10之和。程序正确运行之后,去掉源程序中#include语句,重新编译,观察会有什么问题。3.使用debug调试功能观察任务3程序运行中变量值的变化情况4.编写重载函数max可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。5.编写具有如下原型的函maxArr(),功能是在数组a的n个元素中找出最大值,返回该最大值数组元素的内存地址,而且再通过引用idx返回具有最大值元素在数组中的下标。int*maxArr(int*arr,intn,int&idx);编写主函数,调用maxArr(),以验证其正确性:voidmain(){inttestArr[10]={3,4,56,7,8,98,67,4,8,94};int*maxAddr,maxIdx;maxAddr=maxArr(testArr,10,maxIdx);6.编写程序,通过指针配合new运算符动态生成一个二维数组,数组元素的值为该元素的行值和列值的和,最后输出该二维数组的每个元素。7.定义如下结构体:structitem{intnum;item*next;}输入k个整数(k值也由键盘输入),将它们依次放入由结构体形成的链表(用new运算符生成链表项)中。再输入一个整数x,查找x在链表中第一次出现的位置(序号),若不存在,输出“不存在”。三、实验步骤1.启动VisualC++6.0开发环境2.创建一个项目单击File菜单中的New选项显示New(新建)对话框。单击Projects标签,在Projects(项目)选项卡中,选择Win32ConsoleApplication(Win32控制台应用程序)。在Location(位置)文本框中指定一个路径,在PrejectName(项目名称)文本框中为项目输入一个名字,单击OK(确定)按钮。在弹出的Win32ConsoleApplication-Step1of1对话框中选择AnEmptyProject单选项,然后单击Finish(完成)按钮。最后在NewProjectInformation对话框中单击OK按钮,完成项目的建立。3.建立C++源程序文件选择菜单命令Project|AddtoProject|New,弹出New对话框。在new对话框的Files选项卡中选择C++SourceFile,并填入文件名称,单击OK按钮,完成新建C++源程序文件。4.编辑C++源程序文件内容,在文件编辑窗口中输入代码,并使用菜单命令File|Save保存这个文件。5.建立并运行可执行程序,选择菜单命令Build建立可执行程序。如果你正确输入了源程序,此时便成功地生成了可执行程序。如果程序有语法错误,则屏幕下方的状态窗口中会显示错误信息。根据这些错误信息对源程序进行修改后,重新选择菜单命令Build,建立可执行程序。选择菜单命令运行程序,观察屏幕的显示内容。6.关闭工作空间,选择菜单命令File|CloseWorkspace关闭工作空间。以上菜单命令功能也可以在工具栏中选择相应的工具实现。7.按照以上步骤编2-6题,编译并运行。8.设置断点:用鼠标右键单击源程序中需要设置断点行左边的空白处,出现一个菜单,选择Insert/RemoveBreakpoint一项,可看到左边的边框上出现了一个褐色的圆点,这代表已经在这里设置了一个断点。所谓断点就是程序运行时的暂停点,程序运行到断点处便暂停,这样我们就可以观察程序的执行流程,以及执行到断点处时有关变量的值。进入Debug(调试)状态:选择菜单命令Build|StartDebug|Go,或按下快捷键F5,系统进入Debug(调试)状态,程序开始运行,并暂停在断点处。单步执行:从Debug菜单或Debug工具栏中单击StepOver选项或按钮两次。将把鼠标放在某变量名上片刻,可看到出现了一个提示变量的值;此时,在Variables窗口中也可看该变量以及其他变量的值。单步执行时每次执行一行语句,便于跟踪程序的执行流程。因此为了调试方便,需要单步执行的语句不要与其它语句写在一行中。监视:在watch窗口中,在Name栏中输入需要监视的变量名,按回车键,可看到Value栏中出现对应的值(如果没看到Variables窗口或Watch窗口,可通过View菜单的DebugWindows|Variables或DebugWindows|Watch选项打开它们)。参照上述的方法,再试试Debug菜单栏中别的菜单项,熟悉Debug的各种方法。9.动态内存分配实现动态数组的实现:在int*maxArr(int*arr,intn,int&idx)中的参数中:第一个参数为int型指针arr,调用此函数时,对应实参为一维整型数组名;第三个参数为int型引用idx,调用时的对应实参为int型变量maxIdx,结果将放入该变量中带回到调用函数。其处理框架如下:idx=0;for(inti=1;in;i++)if(*(arr+i)*(arr+idx))…return…;10.利用cinrowcol;获得键盘输入,取得确定的行、列值。通过“a=newint*[row];”,动态生成一组共row个“int*”指针空间,然后通过“a[i]=newint[col]”为每行动态生成col个“int”型数据的存储空间。访问上述动态生成的第i行第j列的int型存储空间时,可使用“*(*(a+i)+j)”、“*(a[i]+j)”或“a[i][j]”。11.通过使用结构体来“串联”起一个可以存放数据的动态链表,且该结构体的其中某一分量,即next必须为指向本结构体的指针。通过使用new运算符依次生成各动态链表项,并通过next指针将它们“串联”成为链表。然后遍历链表进行查询。四、实验分析记录出现的问题以及解决方法,贴出最后运行结果。实验二类与对象(4学时)一、实验目的1.掌握类的定义和使用。2.掌握类的定义和对象的声明。3.复习具有不同访问属性的成员的访问方式。4.学习类的聚集使用方法。5.拷贝构造函数的使用6.运算符重载二、实验任务1.定义一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop,用来输出提示信息,在构造函数和析构函数中也输出提示信息。其中,rank为枚举类型CPU_Rank,定义为enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage为浮点型的电压值。2.定义一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,有两个公有成员函数run、stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,定义并实现这个类。将头文件和类实现文件分开。在主程序中定义一个Computer的对象,调用其成员函数,观察类对象及其成员变量的构造与析构顺序,以及成员函数的调用。3.运行下面程序,观察结果:#includeiostream.h#includestring.hclassPerson{private:char*_name;public:Person(){_name=newchar[256];}voidSetName(constchar*name){if(strlen(name)+1256)strcpy(_name,name);}voidPrintName(){cout_nameendl;}};intmain(){Personp1;p1.SetName(John);p1.PrintName();Personp2(p1);p2.PrintName();p2.SetName(Alice);p2.PrintName();p1.PrintName();return0;}然后为Person类添加一个析构函数,用于释放_name所占空间,再运行程序,分析错误原因,并修改程序使之正常运行。4.定义一个point类,其对象表示平面坐标上的一个点(x,y),并通过该类成员方式对该类重载二目运算符“+”和“^”,用来求出两个对象的和以及两个对象的距离。和定义如下:(1.2,-3.5)+(-1.5,6)=(-0.3,2.5)(1.2,-3.5)^(-1.5,6)=9.87623三、实验步骤1.首先定义枚举类型CPU_Rank,例如enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},再定义CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等私有数据成员,定义成员函数run、stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示信息。在主程序中定义一个CPU的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。注意类定义完后的大括号之号有一个“;”分号。2.使用debug调试功能观察程序的运行流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。参考程序如下:#includeiostream.henumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};classCPU{private:CPU_Rankrank;intfrequency;floatvoltage;public:voidCPU::init(CPU_Rankr,intf,floatv){rank=r;frequency=f;voltage=v;cout构造了一个CPU!endl;}CPU_RankGetRank()const{returnrank;}intGetFrequency()const{returnfrequency;}floatGetVoltage()const{returnvoltage;}voidSetRank(CPU_Rankr){rank=r;}voidSetFrequency(intf){frequency=f;}voidSetVoltage(floatv){voltage=v;}voidRun(){coutCPU开始运行!endl;}voidStop(){coutCPU停止运行!endl;}};voidmain(){CPUa;a.init(P6,300,2.8);a.Run();a.Stop();}3.首先定义CPU类(可使用第二题中的CPU类)、RAM类、CDROM类。再定义Computer类:定义私有数据成员cpu、ram、cdrom,定义公有成员函数run、stop,可在其中输出提示信息。使用debug调试功能观察程序的运行流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序,特别注意观察成员变量的构造与析构顺序。4.类Person有一
本文标题:面向对象程序设计-c++实验指导书
链接地址:https://www.777doc.com/doc-1980904 .html