《第2部分实验指导.pdf》由会员分享,可在线阅读,更多相关《第2部分实验指导.pdf(95页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第 2 部分实验指导实验1 VC+6.0开发环境应用入门(2 学时)一、实验目的1.了解 Visual C+6.0 的特点。2.熟悉Visual C+6.0的开发环境。3.学习用Visual C+6.0编写标准的C+控制台程序。二、实验任务使用Visual C+建立一个非图形化的标准C+程序,编译、运行教材例2.1,即以下程序:#include void main(void)(coutHello!nn;coutWelcome to c+!n”;)三、实验步骤1.启动Visual C+6.0开发环境 从“开始”菜单中选择 程序I Microsoft Visual Studio 6.0 I Mic
2、rosoft VisualC+6.0,显示Visual C+6.0开发环境主窗口。2.创建一个项目 单击File菜单中的New选项显示New(新建)对 话 框(如 图 1-1麻)单击 Projects 标签,在 Projects(项目)选项卡中,选择 Win32 Console Application(W in32控制台应用程序)。在 Location(位 置)文本框中指定一个路径d:c+lab,在 Preject Name(项目名称)文 本 框 中 为 项 目 输 入 一 个 名 字”,单击OK(确定)按钮。在弹出的 Win32 Console Application-Step 1 of 1
3、 对话框中选择 An Empty Project单选项,然后单击Finish(完成)按 钮(如 图 1-2所示)。最后在New Project Information对话框中单击OK按钮,完成项目的建立。levH DFiles Projects Workspaces|Other DocumentsATLCOM AppWizardCluster Resource Type Wizard石Custom AppWizardDatabase ProjectX DevStudio Add-In WizardExtended Stored Proc WizardfilSAPI Extension Wiza
4、rdb Makefilem MFC ActiveX ControlwizardgMFC AppWizard(dll)SMFC AppWizard(exc)jNew Database WizardVi Utility Project邕 Win32 Application_Project name:|lab1_1Location:|d:解程 Vab1_l2dWin32 Console Application%)Win32 Dynamic-Link LibraryWin32 Static LibraryG Create new workspaceAl 选择菜单命令Project I Add to P
5、roject I N ew,弹出New对话框。如 图 1-3所示,在 new对话框的Files选项卡中选择C+Source F ile,并填入文件名称“labl”,单 击 OK按钮,完成新建C+源程序文件。图 1-3 添加新的源程序文件4.编辑C+源程序文件内容 在文件编辑窗口中输入代码(如 图 1-4哧)。图 1-4在文件编辑窗口中输入代码 选择菜单命令File I Save保存这个文件。5.建立并运行可执行程序 选择菜单命令Build-Build labl_l.exe建立可执行程序。如果你正确输入了源程序,此时便成功地生成了可执行程序labl.l.exeo如果程序有语法错误,则屏幕下方的状
6、态窗口中会显示错误信息。根据这些错误信息对源程序进行修改后,重新选择菜单命令Build I Build labl_l.exe,建立可执行程序。选择菜单命令Build I Execute labl_l.exe运行程序,观察屏幕的显示内容。6.关闭工作空间 选择菜单命令File I Close Workspace关闭工作空间。实验2 C+简单程序设计(4学时)一、实验目的1.学会编写简单的C+程序。2.复习基本数据类型变量和常量的应用。3.复习运算符与表达式的应用。4.复习结构化程序设计基本控制结构的运用。5.复习自定义数据类型的应用。6.练习使用简单的输入输出。7.观察头文件的作用。8.学会使用
7、VC+6.0开发环境中的debug调试功能:单步执行、设置断点、观察变量值。二、实验任务1.输入并运行教材上的例题2.7,即:用 do-while语句编程,求自然数卜10之和。程序正确运行之后,去掉源程序中#include语句,重新编译,观察会有什么问题。2.将 do-while语句用for语句代替,完成相同的功能。3.编程计算图形的面积。程序可计算圆形、长方形、正方形的面积,运行时先提示用户选择图形的类型,然后,对圆形要求用户输入半径值,对长方形要求用户输入长和宽的值,对正方形要求用户输入边长的值,计算出面积的值后将其显示出来。4.使用debug调试功能观察任务3 程序运行中变量值的变化情况
8、。5.定义一个表示时间的结构体,可以精确表示年、月、日、小时二 分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。三、实验步骤1.建立一个控制台应用程序项目lab 2 _ l,向其中添加一个C+源文件lab2_Lcpp(方法见实验一),输入教材中例2.7的代码,检查一下确认没有输入错误,选择菜单命令Build I Build lab2_l.exe编译源程序,再选择Build I Execute运行程序,观察输出是否与教材上的答案一致。2.程序正确运行之后,在源程序第一行“#include前面加注释标记使之成为注释行,重新编译,此时,编译器会输出类似于下面内容的提示:d:c+
9、lablab2_llab2_l.cpp(9):error C2065:cout:undeclared identifierd:c+lablab2_ llab2_ 1 .cpp(9):error C2297:illegal,right operand has type char|5d:c+lablab2 llab2 1 .cpp(9):error C2065:endl:undeclared identifierError executing cl.exe.iab2_l.exe-3 error(s),0 waming(s)这是因为C+语言本身没有输入/输出语句,只是C+编译系统带有一个面向对象的1
10、/0软 件 包,即1/0流类库。co u t和c in都是这个类库预定义的流对象,include 指示编译器在对程序进行预处理时,将头文件iostream.h中的代码嵌入到该程序中该指令所在的地方。文件iostream.h中声明了程序所需要的输入和输出操作的有关信息,价 C+程序中如果使用了系统中提供的一些功能,就必须嵌入相关的头文件,否贝力系统无法找到实现这些功能的代码。现在,删除注释标记,将程序恢复正确。3.另建立一个项目lab2_2,包含一个C+源程序lab2_2.cpp,将 do-while语句用for语句代替,完成与实验任务1相同的功能。4.建立项目Iab2_3,计算图形的面积。圆形
11、的面积计算公式为 5=巴*产,长方形的面积计算公式为S=a*b,正方形的面积计算公式为S=a*a:程序中定义一个整型变量iType表示图形的类型,用 cout语句输出提示信息让用户选择图形的类型,用 cin读 入 iType的值,然后,使 用 switch语句判断图形的类型,分别提示用户输入需要的参数值,计算出面积的值后用cout语句显示出来;最后,编译运行程序。5.学习简单的debug调试功能,参考程序如下:/lab2_3.cpp#include const float PI=3.1416;void main()(int iType;float radius,a,b,area;cout ”图
12、形的类型为?(1-圆形2-长 方 形 3-正方形):cin iType;switch(iType)case 1:cout 圆的半径为:;cin radius;area=PI*radius*radius;cout 面积为:areaendl;break;case 2:cout”矩形的长为:”;cin a;cout 矩形的宽为:;cin b;area=a*b;coutcc面积为:areaendl;break;case 3:cout 正方形的边长为:”;cin a;area=a*a;coutcv面积为:areaendl;break;default:cout 不是合法的输入值!首先在第10行处设置调试断
13、点。用鼠标右键单击源程序第10行左边的空白处,出现一个菜单,如图2-1所示;图 2-1 添加断点 选择Insert/Remove Breakpoint-项,可看到左边的边框上出现了 一个褐色的圆点,这代表已经在这里设置了一个断点;所谓断点就是程序运行时的暂停点,程序运行到断点处便暂停,这样我们就可以观察程序的执行流程,以及执行到断点处时有关变量的值。然后选择菜单命令Build I Start Debug I G o,或按下快捷键F 5,系统进入Debug(调试)状态,程序开始运行,一个DOS窗口出现,此时,Visual Studio的外观如图2-2所示,程序暂停在断点处。图 2-2 调试状态下
14、的Visual Studio 单步执行:从 Debug菜单或Debug工具栏中单击Step Over选项或按钮两次。在程序运行的DOS窗口中输入选择的图形类型,例如,输 入 3,代表正方形,这时,回到Visual Studio中,把鼠标放在变量名iType上片刻,可看到出现了一个提示:iType=3;此时,在 Variables窗口中也可看到iType以及其他变量的值。单步执行时每次执行一行语句,便于跟踪程序的执行流程。因此为了调试方便,需要单步执行的语句不要与其它语句写在一行中。在 Watch窗口中,在 Name栏中输入iType,按回车键,可看到Value栏中出现3,这是变量iType现在
15、的值(如果没看到Variables窗口或Watch窗口,可通过 View 菜单的 Debug Windows I Variables 或 Debug Windows I Watch 选项打开它们)。图 2-3是此时Variables窗口和Watch窗口的状态。继续执行程序,参照上述的方法,再 试 试 Debug菜单栏中别的菜单项,熟悉Debug的各种方法。6.建立一个项目lab2_4,包含一个C+源程序lab2_4.cpp。定义一个表示时间的结构体,有表示年、月、日、小时.、分、秒的成员,可以使用short类型;在主程序中实现输入输出。_ _ _ _ _ _ _ _ _ _ _ _ _ _ _
16、 _ _ _ _ _ _ _ _!cout”图形的类型为?(1-圆 形2点 方 形3-正方形):“;cin 卯 e)case Vcout 2;死 =fib=1;使用if语句判断函数的出口,在程序中用cout语句输出提示信息。程序名:lab3_5.cpp。6.使用debug中的Step Into追踪到函数内部,观察函数的调用过程,参考程序如下:/lab3_5#include int fib(int n);int main()int n,answer;cout Enter number:;cin n;cout nn;answer=fib(n);cout answer is the n th Fib
17、onacci numbern;return 0;)int fib(int n)(cout Processing fib(n if(n 选择菜单命令Build I Start Debug I Step in,或按下快捷键Fl 1,系统进入单步执行状态,程序开始运行,并出现一个DOS窗口,此 时 Visual Studio中光标停在 main。函数的入口处;把光标移到语句“answer=fib(n)”前,从 Debug菜单或Debug工具栏中单击Run to Cursor,在程序运行的DOS窗口中按提示输入数字10,这时回到VisualStudio中,光标停在第11行,观察一下n 的值(观察方法见
18、实验二);从 Debug菜单或Debug工具栏中单击Step In to,程序进入fib函数,观察一下n 的值,把光标移到语句“return(fib(n-2)+fib(n-l)”前 从 Debug菜单或Debug工具栏中单击Run to C ursor,再单击Step In to,程序递归调用fib函数,又进入 fib函数,观察一下n 的值;继续执行程序,参照上述的方法,观察程序的执行顺序,加深对函数调用和递归调用的理解;再试试Debug菜单栏中别的菜单项,熟悉Debug的各种方法。实验4 类与对象(4 学时)实验目的1.掌握类的定义和使用。2.掌握类的定义和对象的声明。3.复习具有不同访问属
19、性的成员的访问方式。4.观察构造函数和析构函数的执行过程。5.学习类的聚集使用方法。6.使用VC+的 debug调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。二、实验任务1.定义一个CPU类,包含等级(rank)、频 率(frequency)、电 压(voltage)等属性,有两个公有成员函数run、stop。其中,rank为枚举类型CPU_Rank,定义为enumCPU_Rank P1=1,P2,P3,P4,P5,P6,P7,frequency 为单位是 MHz 的整型数,voltage为浮点型的电压值。观察构造函数和析构函数的调用顺序。2.定义一个简单的Comp
20、uter类,有数据成员芯片(cpu)、防(ram)、沟 区(cdrom)等等,有两个公有成员函数run、stop。cpu为 CPU类的一个对象,ram 为 RAM类的一个对象,cdrom为 CDROM类的一个对象,定义并实现这个类。3.(选做)设计一个用于人事管理的People(人员)类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号)、sex(性别)、birthday(出生日期、id(身份证号)等等。其 中“出生日期”定义为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。三、实验步骤1.首
21、先定义枚举类型 CPU_Rank,例如 enum CPU_Rank P1=1,P2,P3,P4,P5,P6,P7,再定义CPU类,包含等级(rank)、频 率(frequency)、电 压(voltage)等私有数据成员,定义成员函数run、sto p,用来输出提示信息,在构造函数和析构函数中也可以输出提示信息。在主程序中定义一个CPU的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。程序名:lab4.cpp。2.使用debug调试功能观察程序ab4.cpp的运行流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。参考程序如下:/lab4_l.cpp#include
22、 enum CPU_Rank P 1=1,P2,P3,P4,P5,P6P7;class CPU(private:CPU_Rank rank;int frequency;float voltage;public:CPU(CPU.Rank r,int f,float v)(rank=r;frequency=f;voltage=v;cout ”构造了一个 CPU!1 endl;)CPU()cout ”析构了一个 CPU!”endl;CPU_Rank GetRank()const return rank;int GetFrequencyO const return frequency;)float G
23、etVoltage()const return voltage;void SetRank(CPU_Rank r)rank=r;void SetFrequency(int f)frequency=f;void SetVoltage(float v)voltage=v;void Run()cout CPU 开始运行!”endl;void Stop()cout CPU 停止运行!”v 单击Build I Start Debug I Step Into命令,或按下快捷犍F i l,系统进入单步执行状态,程序开始运行,一个DOS窗口出现,此 时 Visual Studio中光标停在main。函数的入口处
24、;从 Debug菜单或Debug工具栏中单击Step O v er,此时,光标下移,程序准备执行CPU对象的初始化;单击Step In to,程序准备执行CPU类的构造函数;连续单击Step O ver,观察构造函数的执行情况,直到执行完构造函数,程序回到主函数;此时程序准备执行CPU对象的run。方法,单击Step In to,程序进入run()成员函数,连续单击Step O v er,直到回到main。函数;继续执行程序,参照上述的方法,观察程序的执行顺序,加深对类的构造函数、析构函数、成员函数的执行顺序的认识;再试试Debug菜单栏中别的菜单项,熟悉Debug的各种方法。4.首先定义CP
25、U类(可 使 用第二题中的CPU类)、RAM类、CDROM类。再定义Computer类:定义私有数据成员cpu、ram、cdrom,定义公有成员函数run、stop,可在其中输出提示信息。在主程序中定义一个Computer的对象,调用其成员函数,观察类对象及其成员变量的构造与析构顺序,以及成员函数的调用。程序名:lab4_2.cpp5.使用debug调试功能观察lab4_2.cpp程序的运行流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序,特别注意观察成员变量的构造与析构顺序。实验5 C+程序的结构(2学时)一、实验目的i.观察程序运行中变量的作用域、生存期和可见性;2.学习类的静态成
26、员的使用;3.学习多文件结构在C+程序中的使用;二、实验任务1.运行下面的程序,观察变量x、y 的值。/lab5_l.cpp#include void fn 1();int x=1,y=2;int main()cout Begin.endl;cout x=n x endl;cout y=*y endl;cout Evaluate x and y in main().n endl;int x=10,y=20;cout x=n x endl;cout y=y endl;cout Step into fnl().endl;fnl();cout ”Back in main endl;cout x=n
27、x endl;cout y=y endl;return 0;)void fnl()(int y=200;cout x=x endl;cout y=y endl;2.实现客户机(CLIENT)类。定义字符型静态数据成员ServerName,保存其服务器名称;整型静态数据成员ClientNum,记录已定义的客户数量;定义静态函数ChangeServerName()改变服务器名称。在头文件client.h中定义类,在文件client.cpp中实现,在文件test.cpp中测试这个类,观察相应的成员变量取值的变化情况。三、实验步骤1.运行lab5_l程序,观察程序输出。全局变量的作用域为文件作用域,在
28、整个程序运行期间有效,但如果在局部模块中定义了同名的变量,则在局部模块中,可见的是周部变量,此时,全局变量不可见;而局部变量的生存期只限于相应的程序模块中,离开相应的程序模块,局部变量x、y 就不再存在,此时同名的全局变量重新可见。2.新建一个空的项目lab5_2,添加头文件clientj,在其中定义类CLIENT,注意使用编译预处理命令;再添加源程序文件client.cpp,在其中实现CLIENT类,注意静态成员变量的使用方法;再添加文件lab5_2.cpp,在其中定义main()函数,测试CLIENT类,观察相应的成员变量取值的变化情况。实验6 数组、指针与字符串(4 学时)一、实验目的i
29、.学习使用数组数据对象;2.学习字符串数据的组织和处理;3.学习标准C+库的使用:4.掌握指针的使用方法;5.练习通过debug观察指针的内容及其所指的对象的内容;6.练习通过动态内存分配实现动态数组,并体会指针在其中的作用;7.分别使用字符数组和标准C+库练习处理字符串的方法。二、实验任务1.编写并测试3X 3矩阵转置函数,使用数组保存3X 3矩阵。2.使用动态内存分配生成动态数组来重新完成上题,使用指针实现函数的功能。3.编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数。4.使用string类定义字符串对象,重新实现上一小题。5.定 义 一 个 Employee类,其中
30、包括姓名、街道地址、城市和邮编等属性,以及change_name()和 display。等函数。display。显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性,实现并测试这个类。6.定义包含5 个元素的对象数组,每个元素都是Employee类型的对象。7.(选做)修改实验四中的选做实验中的people(人员)类。具有的属性如下:姓名 char name 1、编号 char number7、性别 char sex3、生日 birthday,身份证号charid16,其 中“出生日期”定义为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括
31、:构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。在测试程序中定义people类的对象数组,录入数据并显示。三、实验步骤1.编写矩阵转置函数,输入参数为3X 3整型数组,使用循环语句实现矩阵元素的行列对调,注意在循环语句中究竟需要对哪些元素进行操作,编 写 main。函数实现输入、输出。程序名:lab6_l.cpp。2.改写矩阵转置函数,参数为整型指针,使用指针对数组元素进行操作,在 main()函数中使用new操作符分配内存生成动态数组。通 过 debug观察指针的内容及其所指的对象中的内容。程序名:lab6_2.cpp。3.编程实现两字符串的连接。定义字符数组保存字符串,在程序中提示
32、用户输入两个字符串,实现两个字符串的连接,最后用cout语句显示输出。程序名:lab6_3.cppo用 cin实现输入,注意,字符串的结束标志是ASCH码 0,使用循环语句进行字符串间的字符拷贝。4.使用string类定义字符串对象,编程实现两字符串的连接。在 string类中已重载了运 算 符“+=”实现字符串的连接,可以使用这个功能。程序名:lab6_4.cpp。5.在 employee.h文件中定义Employee类。Employee类具有姓名、街道地址、城市和邮编等私有数据成员,都可以用字符型数组来表示,在成员函数中,构造函数用来初始化所有成员数组,对字符数组的赋值可以使用字符串拷贝函
33、数strcpy(char*,char*name);display。中使用cout显示姓名、街道地址、城市和邮编等属性,change_name()改变类中表示姓名属性的字符数组类型的数据成员。在主程序中定义这个类的对象并对其进行操作。程序名:lab6_5.cpp。6.使用上一小题中定义的Employee类定义对象数组emp5,使用循环语句把数据显示出来。程序名:lab6_6.cpp。实验7 继承与派生(4 学时)一、实验目的1.学习定义和使用类的继承关系,定义派生类;2.熟悉不同继承方式下对基类成员的访问控制;3.学习利用虚基类解决二义性问题。二、实验任务1.定义一个基类Anim al,有私有整
34、型成员变量a g e,构造其派生类d o g,在其成员函数 SetAge(int n)中直接给age赋值,看看会有什么问题,把 age改为公有成员变量,还会有问题吗?编程试试看。2.定义一个基类BaseClass,有整型成员变量Num ber,构造其派生类DerivedClass,观察构造函数和析构函数的执行情况。3.定义一个车(vehicle)基类,具有MaxSpeed、Weight等成员变量,Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽 车(motorcar)类 自行车(bicycle)类有高度(Height)等属性,汽 车(motorcar)类有座位数(SeatN
35、um)等属性。从 bicycle和 motorcar派生出摩托车(motorcycle)类,在继承过程中,注意把vehicle设置为虚基类。如果不把vehicle设置为虚基类,会有什么问题?编程试试看。4.(选做)从实验6 中的people(人员)类派生出student(学生)类,添加属性:班号char classNO7;从 people类派生出teacher(教师)类,添加属性:职务charprincipalshipfl 1 部门 char departmentalo 从 student 类中派生出 graduate(研究生)类,添加属性:专业char subject 加卜导师teacher
36、 adviser;从 graduate类和teacher类派生出TA(助教生)类,注意虚基类的使用。重载相应的成员函数,测试这些类。类之间的关系如下图所示:图 7-1类图三、实验步骤1.编写程序定义基类Anim al,成员变量age定义为私有的。构造派生类d og,礴 成员函数SetAge(intn)中直接对age赋值时,会出现类似以下的错误提示:error C2248:age:cannot access private member declared in class Animalerror C2248:age:cannot access private member declared in
37、 class Animal把 age改为公有成员变量后重新编译就可以了。程序名:lab7.cpp。2.编写程序定义个基类BaseClass,构造其派生类DerivedClass,在构造函数和析构函数中用cout输出提示信息,观察构造函数和析构函数的执行情况。程序名:lab7_2.cpp,3.用 debug功能跟踪程序lab7_2的执行过程,观察基类和派生类的构造函数和析构函数的执行情况。4.编写程序定义一个车(vehicle)基类,由此派生出自行车(bicycle)类 舔(motorcar)类,注 意 把 vehicle派生为虚基类。再 从 bicycle和 motorcar派生出摩托车(mo
38、torcycle)类,在 main。函数中测试这个类。程序名:lab7_3.cpp。编译成功后,把 vehicle设置为非虚基类,再编译次,此时系统报错,无法编译成功。这是因为若不把vehicle设置为虚基类,会出现二义性错误,程序不能成功编译。实验8 多态性(2 学时)一、实验目的i.掌握运算符重载的方法;2.学习使用虚函数实现动态多态性。二、实验任务1.定义Point类,有坐标_x,_ 丫两个成员变量;对 Point类重载“+”倘 )、“一”(自减)运算符,实现对坐标值的改变。2.定义一个车(vehicle)基类,有 Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽 车
39、(motorcar)类,从 bicycle 和 motorcar 派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。观察虚函数的作用。3.(选做)对实验六中的people类重教“=”运算符和“=”运算符,“=”运算符判断两个people类对象的id属性的大小;“=”运算符实现people类对象的赋值操作。三、实验步骤1.编写程序定义Point类,在类中定义整型的私有成员变量一x、_ y,定义成员函数Point&operator+();Point operator+(int);以实现对 Point 类重载“+”(自增)运算符,定义成员函数Point&operator-(
40、);Point operator-(int);以实现对Point类重载“-”(自减)运算符,实现对坐标值的改变。程序名:lab8.cpp。2.编写程序定义一个车(vehicle)基类,有 Run、Stop等成员函数,由此派生出自行车(bicycle)类 汽车(motorcar)类,从 bicycle 和 motorcar 派生出摩托车(motorcycle)类,它们都有Run St op等成员函数。在 main。函数中定义vehicle bicycle s motorcar motorcycle的对象,调用其Run()、Stop。函数,观察其执行情况。再分别用vehicle类型的指针来调用这几
41、个对象的成员函数,看看能否成功;把 Run、Stop定义为虚函数,再试试看。程序名:lab8_2.cpp。实验9 群体类(4 学时)实验目的i.了解链表类的定义与实现,学习其使用方法;2.了解栈类的定义与实现,学习其使用方法;3.了解队列类的定义与实现,学习其使用方法;4.了解C+标准模板库STL的使用方法。二、实验任务1.编写程序link.h实现教材中例9.6的链表类。在测试程序lab9_l.cpp中定义两个整型链表A 和 B,分别插入5 个元素,然后把B 中的元素加入A 的尾部。2.编写程序queue.h,用链表实现队列(或栈)类。在测试程序lab9_2.cpp中定义一个整型队列(或栈)对
42、象,插入5 个整数,压入队列(或栈),再依次取出并显示出来。3.使用C+标准模板库(STL)中的双向队列类(deque)重新实现上一小题。4.(选做)定义course(课程)类,有属性:课程名char name21、成绩short score;在实验七中的student类中增加属性:所修课程courses,为课程类对象的链表。在测试程序中测试这个类。学生类与课程类关系如图9-1所示。图 9-1类图三、实验步骤1.参照教材中链表类LinkedList的定义(教材中的例程9-6.h),给出其实现,注意合理使用Node类(教材中的例程9-3.h)的成员函数。在测试程序中定义整型链表A和 B,分别插入
43、5 个元素,使用循环语句显示链表中的元素,然后把B 中的元素加入A 的尾部,再显不出来。2.队列类的特点就是其元素的操作顺序为先入先出(FIFO),用上.题中的链表类实现队列类,用链表类的成员函数实现队列类的成员函数,在测试程序中定义一个整型队列对象,观察队列类中元素先入先出的特点。3.在程序包含语句#由说(16 vdeque,使用deque类的方法push_back()empty。、pop_front()完成上一小题的要求。程序名:lab9_3.cpp。实验10 群体数据的组织(2 学时)一、实验目的i.掌握对数组元素排序的方法;2.掌握对数组元素查找的方法;3.应用标准C+库(S T L)
44、实现查找与排序。二、实验任务1.将直接插入排序、直接选择排序、冒泡排序、顺序查找函数封装到教材中第9 章的数组类中,作为成员函数。实现并测试这个类。2.定义一个整形数组,使用C+标准模板库(S T L)中的查找函数End()进行数据的查找。3.(选做)定义一个对people类对象数组按编号排序的函数,一个按编号查找people对象的函数。在测试程序中使用前面实验得到的结果定义教师数组和学生数组,分别对教师数组和学生数组进行排序和查找。三、实验步骤1.编写程序arrayl.h定义并实现数组类,其中包含成员函数void InsertionSort。实现直接插入排序;成员函数void Selecti
45、onSort。实现直接选择排序;成员函数voidBubbleSort。实现冒泡排序;成员函数int SeqSearch(T key)实现顺序查找;这些函数操作的数据就是数组类的数据成员alist在测试程序labl0.cpp中定义数组类的对象,测试这些成员函数。2.定义一个包含8 个元素的整型数组,使 用 S T L 中的函数find(lnputlterator first,Inputlterator last,constT&value)进行数据的查找。在 find函数的参数中,first是数组第一个元素的地址,last是数组最后一个元素的地址,value是待查找的数字。在程序中把数组的值和查找
46、的结果显示出来。程序名:labl0_2.cpp。实验11 流类库与输入/输 出(2学时)一、实验目的i.熟悉流类库中常用的类及其成员函数的用法。2.学习标准输入输出及格式控制;3.学习对文件的应用方法(二进制文件、文本文件)。二、实验任务1.观察以下程序的输出,注意对输出格式的控制方法;/labl l_l.cpp#include using namespace std;#define D(a)T#a endl;aofstream T(output.out);void main()D(int i=53;)D(floatf=4700113.141593;)char*s=Is there any m
47、ore?;D(T.setf(ios:unitbuf);)D(T.setf(ios:showbase);)D(T.setf(ios:uppercase);)D(T.setf(ios:showpos);)D(T i endl;)D(T.setf(ios:hex,ios:basefield);)D(T i endl;)D(T.unsetf(ios:uppercase);)D(T.setf(ios:oct,ios:basefield);)D(T i endl;)D(T.unsetf(ios:showbase);)D(T.setf(ios:dec,ios:basefield);)D(T.setf(ios
48、:left,ios:adjustfield);)D(T.fill(,0,);)D(T fill char:“T.fill()endl;)D(T.width(8);)T i endl;D(T.setf(ios:right,ios:adjustfield);)D(T.width(8);)T i endl;D(T.setf(ios:internal,ios:adjustfield);)D(T.width(8);)T i endl;D(T i endl;)/Without width(lO)D(T.unsetf(ios:showpos);)D(T.setf(ios:showpoint);)D(T pr
49、ec=T.precision()endl;)D(T.setf(ios:scientific,ios:floatfield);)D(T endl f endl;)D(T.setf(ios:fixed,ios:floatfield);)D(T f endl;)D(T.setf(0,ios:floatfield);)/AutomaticD(T f endl;)D(T.precision(16);)D(T prec=*T.precision()endl;)D(T endl f endl;)D(T.setf(ios:scientific,ios:floatfield);)D(T endl f endl;
50、)D(T.setf(ios:fixed,ios:floatfield);)D(T f endl;)D(T.setf(0,ios:floatfield);)/AutomaticD(T f endl;)D(T.width(8);)T s endl;D(T.width(36);)T s endl;D(T.setf(ios:left,ios:adjustfield);)D(T.width(36);)T s endl;D(T.unsetf(ios:showpoint);)D(T.unsetf(ios:unitbuf);)2.编写程序,用二进制方式打开指定的一个文件,在每一行前加行号。3.(选做)使用实验