[C++程序设计]实验指示书

上传人:z*** 文档编号:59489920 上传时间:2022-03-03 格式:DOC 页数:44 大小:3.05MB
收藏 版权申诉 举报 下载
[C++程序设计]实验指示书_第1页
第1页 / 共44页
[C++程序设计]实验指示书_第2页
第2页 / 共44页
[C++程序设计]实验指示书_第3页
第3页 / 共44页
资源描述:

《[C++程序设计]实验指示书》由会员分享,可在线阅读,更多相关《[C++程序设计]实验指示书(44页珍藏版)》请在装配图网上搜索。

1、面向对象程序设计 实验指示书1前前 言言本书是电大本科课程面向对象程序设计的实验指示书,一般人员也可以使用它作为学习 C+语言的上机指导。因为选择以 Microsoft 公司的 C+开发环境 Visual C+作为实验环境,因此书的前一部分介绍了 Visual C+的一些基本知识,并且在实验进行的过程中穿插介绍使用 Visual C+的一些技巧。书的内容分为两大部分:第一部分介绍 Visual C+实验环境;第二部分是具体的实验安排。书中共安排了八次实验,每个实验 3 个学时。具体安排是:实验序号实验序号实验内容实验内容1熟悉实验环境2简单程序开发3函数与程序结构4复杂数据类型5结构和类6继承

2、与虚函数7重载与文件 I/O8面向对象程序设计其中第一个实验和最后一个实验是有关 Visual C+实验环境的,其他每个实验与 C+语言的一个重要知识点对应。每个实验都列出了实验目的、实验要求以及思考问题,一些实验还列出了测试数据。本书的实验有配套的答案软盘,电大的学生可以到指导教师那里寻求帮助。使用本书前,请先阅读以下内容:使用本书前,请先阅读以下内容:1C+语言实验环境配置要求硬件配置硬件配置:586 以上 PC 兼容机或品牌机,配有彩色显示器、鼠标、键盘,内存不小于20MB,硬盘自由空间不少于 60MB。推荐配置推荐配置为内存 32MB 或 64MB(或以上) ,硬盘自由空间 500MB

3、 以上。软件配置软件配置:操作系统:Windows95, Windows98, Windows NT3.51 以上版本。开发集成环境开发集成环境:Microsoft Visual C+5.0 以上版本2建立自己的工作目录你需要在计算机上先建立自己的工作目录,所有的实验都在该工作目录下进行。使用Visual C+建立新项目时,需要指定该目录作为项目所在的目录。本书中假设你的工作目录为 c:studentyour_name,具体的实验目录由你的指导教师指定。3安装 Visual C+Visual C+ 6.0 和 Visual C+ 5.0 最大的不同是在联机帮助系统上做了很大改变。Visual

4、C+ 5.0 的帮助系统直接集成在开发环境之中,在安装 Visual C+ 5.0 时就可以选择安装帮助内容。而 Visual C+ 6.0 的联机帮助系统采用了 MSDN(Microsoft Developer Network)库,在安装 Visual C+ 6.0 时,只安装了 MSDN 的索引,实际的内容在光盘上。如果希望能脱离光盘使用帮助系统,需要在安装了 Visual C+ 6.0 以后,再运行 MSDN 的安装程序,把完整的库装到硬盘上。2目 录第一部分第一部分 VISUAL C+实验环境介绍实验环境介绍 .3一、Visual C+简介.3二、项目开发过程.4三、集成开发环境 De

5、veloper Studio.4四、常用功能键及其意义.7第二部分第二部分 实验实验.8实验一熟悉实验环境.8实验二简单程序开发.15实验三函数与程序结构.17实验四复杂数据类型.20实验五结构和类.23实验六继承与虚函数.28实验七重载与文件I/O.32实验八面向对象程序设计.343第一部分第一部分 Visual C+实验环境介绍实验环境介绍一、一、Visual C+简介简介Visual C+是 Microsoft 公司的 Visual Studio 开发工具箱中的一个 C+程序开发包。VisualStudio 提供了一整套开发 Internet 和 Windows 应用程序的工具,包括 V

6、isualC+, Visual Basic, Visual Foxpro, Visual InterDev, Visual J+以及其他辅助工具,如代码管理工具 Visual SourceSafe 和联机帮助系统 MSDN。Visual C+包中除包括 C+编译器外,还包括所有的库、例子和为创建 Windows 应用程序所需要的文档。从最早期的 1.0 版本,发展到最新的 6.0 版本,Visual C+已经有了很大的变化,在界面、功能、库支持方面都有许多的增强。最新的 6.0 版本在编译器、MFC 类库、编辑器以及联机帮助系统等方面都比以前的版本做了较大改进。Visual C+一般分为三个版

7、本:学习版、专业版和企业版,不同的版本适合于不同类型的应用开发。实验中可以使用这三个版本的任意一种。VisualVisual C+C+集成开发环境(集成开发环境(IDEIDE)集成开发环境集成开发环境(IDE)是一个将程序编辑器、编译器、调试工具和其他建立应用程序的工具集成在一起的用于开发应用程序的软件系统。Visual C+软件包中的 DeveloperDeveloper StudioStudio 就是一个集成开发环境,它集成了各种开发工具和 VC 编译器。程序员可以在不离开该环境的情况下编辑、编译、调试和运行一个应用程序。IDE 中还提供大量在线帮助信息协助程序员做好开发工作。Develo

8、per Studio 中除了程序编辑器、资源编辑器、编译器、调试器外,还有各种工具和向导(如 AppWizard 和 ClassWizard) ,以及 MFC 类库,这些都可以帮助程序员快速而正确地开发出应用程序。向导向导(Wizard)(Wizard)向导是一个通过一步步的帮助引导你工作的工具。Developer Studio 中包含三个向导,用来帮助程序员开发简单的 Windows 程序,它们是:AppWizardAppWizard:用来创建一个 Windows 程序的基本框架结构。AppWizard 向导会一步步向程序员提出问题,询问他所创建的项目的特征,然后 AppWizard 会根据

9、这些特征自动生成一个可以执行的程序框架,程序员然后可以在这个框架下进一步填充内容。AppWizard 支持三类程序:基于视图/文档结构的单文档应用、基于视图/文档结构的多文档应用程序和基于对话框的应用程序。也可以利用 AppWizard 生成最简单的控制台应用程序(类似于DOS 下用字符输入输出的程序) 。ClassWizardClassWizard:用来定义 AppWizard 所创建的程序中的类。可以利用 ClassWizard 在项目中增加类、为类增加处理消息的函数等。ClassWizard 也可以管理包含在对话框中的控件,它可以将 MFC 对象或者类的成员变量与对话框中的控件联系起来。

10、ActiveXActiveX ControlControl WizardWizard:用于创建一个 ActiveX 控件的基本框架结构。ActiveX 控件是用户自定义的控件,它支持一系列定义的接口,可以作为一个可再利用的组件。MFCMFC 库库4库(library)是可以重复使用的源代码和目标代码的集合。MFC(Microsoft Fundamental Casses)是 Visual C+开发环境所带的类库,在该类库中提供了大量的类,可以帮助开发人员快速建立应用程序。这些类可以提供程序框架、进行文件和数据库操作、建立网络连接、进行绘图和打印等各种通用的应用程序操作。使用 MFC 库开发应用

11、程序可以减少很多工作量。 二、项目开发过程二、项目开发过程在一个集成的开发环境中开发项目非常容易。一个用 C+开发的项目的通用开发过程可以用左图表示。建立一个项目的第一步是利用编辑编辑器建立程序代码文件,包括头文件、代码文件、资源文件等。然后,启动编译程序,编译程序首先调用预处理预处理程序处理程序中的预处理命令(如#include,#define 等) ,经过预处理程序处理的代码将作为编译程序的输入。编译对编译对用户程序进行词法和语法分析,建立目标文件,文件中包括机器代码、连接指令、外部引用以及从该源文件中产生的函数和数据名。此后,连接连接程序将所有的目标代码和用到的静态连接库的代码连接起来,

12、为所有的外部变量和函数找到其提供地点,最后产生一个可执行文件。一般有一个 makefile 文件来协调各个部分产生可执行文件。 可执行文件分为两种版本:Debug 和 Release。Debug 版本用于程序的开发过程,该版本产生的可执行程序带有大量的调试信息,可以供调试程序使用,而 Release 版本作为最终的发行版本,没有调试信息,并且带有某种形式的优化。学员在上机实习过程中可以采用 Debug 版本,这样便于调试。选择是产生 Debug 版本还是 Release 版本的方法是:在 Developer Studio 中选择菜单Build|Set Active Configuration,

13、在弹出的对话框中,选择所要的类型,然后选择 OK 关闭对话框。Visual C+ 集成开发环境中集成了编辑器、编译器、连接器以及调试程序,覆盖了的开发应用程序的整个过程,程序员不需要脱离这个开发环境就可以开发出完整的应用程序。5三、集成开发环境三、集成开发环境 DeveloperDeveloper StudioStudio进入进入 Developer Studio如果你使用的是 Visual C+ 6.0,则要进入 Developer Studio,需要单击任务栏中“开开始始”后选择“程序程序” ,找到 Microsoft Visual Studio 6.0 文件夹后,单击其中的 Micros

14、oft Visual C+6.0 图标,则可以启动 Developer Studio。如果你使用的是 Visual C+ 5.0,则要进入 Developer Studio,需要单击任务栏中“开开始始”后选择“程序程序” ,找到 Microsoft Visual C+ 5.0 文件夹后,单击其中的 Microsoft Visual C+5.0 图标,则可以启动 Developer Studio。Developer Studio 的界面的界面Developer Studio 用户界面是一个由窗口、工具条、菜单、工具及其他部分组成的一个集成界面。通过这个界面,用户可以在同一环境下创建、测试、调试应

15、用程序。VC5 和 VC6 的 Developer Studio 的初始化界面有一些小的差异,VC5 的界面如下:主要部分介绍如下:主要部分介绍如下:工具条和菜单,用于提供用户操作的命令接口。菜单以文字和层次化的方式提供命令接口,工具条由一系列按钮组成。这些按钮用一系列小的位图标志。工具条以图标方式提供快速的命令选择。菜单和工具条在开发的不同进程有不同显示内容。当第一次打开 Developer Studio 时,标准的工具条和菜单就会显示出来,随着开发的不同步骤,不同的工具条就会自动显示出来,菜单也会有所变化。工具条有很多种,你可以显示任意多的工具条,只要屏幕空间允许。工具条可以任意移动,也可

16、以放大缩小。工具条和菜单条功能基本相同,唯一的区别是:菜单条总占据一行,并且一般不能隐藏。工作区窗口,这个窗口包含关于正在开发的这个项目的有关信息。在没有开发任何项目时,该窗口显示系统的帮助目录。当打开一个项目以后,工作区窗口将会显示关于当前项目的文件信息和类的信息。下图是打开一个项目 hello 以后的工作区窗口(假设6该项目由两个文件 cpp1.cpp, cpp2.cpp 组成) 。文档窗口区,这个区域可以显示各种类型的文档,如源代码文件、头文件、资源文件等。可以同时打开多个文档。输出窗口,输出窗口用来显示几种信息,可以通过选择不同的标签显示不同的信息。这些信息包括:编译连接结果信息(Bu

17、ild 标签) 、调试信息(Debug 标签) 、查找结果信息(Find in Files 标签) 。其中查找结果信息有两个标签,可以显示两次在文件中查找指定内容的结果VC6 因为在联机帮助系统上比 VC5 做了很大改进,所以在工作区窗口中没有 VC5 的InfoView,初始化界面的其他部分都与 VC5 相似。Deleveloper Studio 使用 Microsoft Developer Network(MSDN)库作为它的联机帮助系统。其界面如下:总的来说,窗口和命令接口(包括工具条和菜单条)是构成界面的最主要组成部分。通常有两种窗口:文档窗口和可附着(docking)窗口。文档窗口显

18、示在文档窗口区,用于显示和编辑文档,其的大小和位置可以随其所处的 Developer Studio 窗口的改变而改变,可以最大化和最小化。可附着窗口可以附着于应用程序窗口的边界,也可以浮在屏幕上的任何位置。可附着窗口有:工作区(workspace)窗口,输出(output)窗口,调试窗口(包括 variable, watch, local 等窗口)等。文档窗口的位置、大小及是否可见和它所在的项目有关,docking 窗口的位置、大小及是否可见则与项目进行的状态以及各种编辑和调试的操作有关。各种窗口和各种工具条以及菜单构成了界面的布局。一旦用户决定了一种界面布局,7系统就会为一直为用户保持这种布

19、局,直到用户下一次改变该布局为止。获得帮助信息获得帮助信息大多数时候,你可以通过按 F1 得到上下文帮助。如在编辑文件时按 F1 可以得到有关编辑的帮助,在编译连接错误信息上按 F1 可以得到关于该错误的帮助信息。如果想系统地获得帮助,在 VC5 中可以单击工作区窗口的 InfoView 标签,从其中选择要想了解的内容。要想查找关于某个话题的帮助,可以选择菜单 Help|Search,在查询对话框中进行查找。VC6 中,可以通过选择菜单 Help|Contents 来启动 MSDN 查阅器,MSDN 查阅器是一个功能强大的程序,可以方便地浏览、查找信息,要想知道具体如何使用 MSDN 查阅器,

20、可以在 MSDN 查阅器中选菜单 Help 下的命令。Visual C+的编辑器的编辑器Developer Studio 包含一个功能强大的编辑器,可以编辑将被编译成 Windows 程序的Visual C+源文件。这个编辑器有点象字处理器,但是没有字处理器具备的复杂的排版、文本格式等功能,它注重的是如何帮助程序员快速高效地编制程序。它具有以下特点:自动语法。用高亮度和不同颜色的字来显示不同的语法成分,如注释、关键字和一般代码用不同的颜色显示自动缩进。帮助你排列源代码,使其可读性更强参数帮助。在编辑时用到预定义的 windows 函数时,可以自动为你显示函数参数集成的关键字帮助。能够使你快速得

21、到任何关键字、MFC 类或 Windows 函数的帮助信息(按 F1 即可)拖放编辑。能够用鼠标选择文本并自由拖动到任意位置自动错误定位。能自动将光标移动到有编译错误的源代码处。当你打开一个源代码文件时,就可以利用编辑器对其进行编辑。源代码文件在文档显示区显示,每个文件有独立的显示窗口。如果你选择用其他编辑器编辑源文件,必须将它以纯文本的方式保存。VC 的编译器不能处理其中有特别格式字符的文件。四、常用功能键及其意义四、常用功能键及其意义为了使程序员能够方便快捷地完成程序开发,开发环境提供了大量快捷方式来简化一些常用操作的步骤。键盘操作直接、简单,而且非常方便,因而程序员非常喜欢采用键盘命令来

22、控制操作。下面是一些最常用的功能键,希望学员在实验中逐步掌握。操作类型功能键对应菜单含义文件操作Ctrl+NFile|New创建新的文件、项目等Ctrl+OFile|Open打开项目、文件等Ctrl+SFile|Save保存当前文件编辑操作Ctrl+XEdit|Cut剪切Ctrl+CEdit|Copy复制Ctrl+VEdit|Paste粘贴Ctrl+ZEdit|Undo撤消上一个操作Ctrl+YEdit|Redo重复上一个操作Ctrl+AEdit|Select All全选DelEdit|Del删除光标后面的一个字符8建立程序操作Ctrl+F7Build| Compiler current fi

23、le编译当前源文件Ctrl+F5Build|Run exe运行当前项目F7Build|Build exe建立可执行程序F5Build|Start Debugging启动调试程序调试F5Debug|Go继续运行F11Debug|Step into进入函数体内部shift+F11Debug|Step out从函数体内部运行出来F10Debug|Step over执行一行语句F9设置/清除断点Ctrl+F10Debug|Run to cursor运行到光标所在位置shift+F9Debug|QuickWatch快速查看变量或表达式的值Shift + F5Debug|Stop debugging停止调

24、试第二部分第二部分 实验实验注意事项:(1) 每次实验以前,需要详细阅读实验目的、实验要求和实验提示,以便能准确地理解实验要求,达到实验的目的。有测试数据要求的,需要给出测试结果,有要求回答问题的,需要给出问题的回答。每次实验都有几个题目,要求为每个题目创建不同的项目,以便于检查。(2) 有的实验前后有联系,需要先完成前面的实验再进行后面的实验,如类和继承的实验。请务必按照先后顺序完成实验。(3) 辅导老师那儿有关于实验的详细解答,如果有疑问,可以请教辅导老师。实验一实验一 熟悉实验环境熟悉实验环境实验目的实验目的了解和使用 VC 集成开发环境熟悉 VC 环境的基本命令和功能键,熟悉常用的功能

25、菜单命令学习使用 VC+环境的帮助学习完整的 C+程序开发过程理解简单的 C+程序结构了解用 Visual C+开发 Windows MFC 应用程序的过程实验内容实验内容本次实验你将学习有关 Visual C+开发环境的一些知识,并尝试实现一个简单的 DOS程序和 Windows 程序。通过本次实验,你可以了解用 Visual C+开发 C+应用程序的过程。91. 熟悉 Visual C+实验环境实验步骤实验步骤(1) 启动 Developer Studio,看看初始化界面由哪些部分组成(2) 查看各菜单项,看看都有哪些子菜单和命令(3) 将鼠标放置于各工具条图标上,系统会自动显示该图标代表

26、的命令含义,了解一下都有哪些命令。(4) 在任意工具条上单击鼠标右键,弹出式菜单上将显示所有可用的工具条,选择其中没有对号()的项,看看有什么效果,再选择有对号的项,又有什么效果?(5) 将鼠标移动到任意工具条上,将鼠标放到图标间隙,按下鼠标左键不放,移动鼠标到屏幕中间,有什么现象发生?再将它拖回到原来位置,有什么现象发生?(6) 将鼠标移动到左边的工作区窗口,按下鼠标左键不放,移动鼠标到屏幕中间,有什么现象发生?再将它拖回到原来位置,有什么现象发生?(7) 将鼠标移动到下边的输出窗口,按鼠标右键,弹出一个菜单,选择其中的菜单项”Hide”,结果如何?要重新显示该窗口,选择菜单 View|Ou

27、tput,窗口是不是又显示出来了?(8) 学习使用帮助系统。如果你用的是 Visual C+5.0,则在工作区窗口的 InfoView 中选择你感兴趣的内容,双击它,在文档区显示具体的帮助信息。如果你用的是 Visual C+6.0,选择菜单 Help|Contents,启动 MSDN 联机帮助系统,学习使用该帮助系统。联机帮助系统是一个相对独立的程序,它和 Developer Studio 是两个程序,但是它的启动和停止都受 Developer Studio 影响。MSDN 联机帮助系统运行的前提条件是 Developer Studio 在运行。(9) 选 File|Exit 退出 Deve

28、loper Studio。2. 控制台应用用 AppWizard 建立一个控制台应用,在终端上输出”Hello”。术语:“控制台应用程序”是一个在 DOS 窗口中运行的基于字符的程序。由于这种模式的应用程序比 Windows 程序简单,我们先选择利用 Visual C+来建立这样一个应用,这样使得我们可以将精力先投入到学习使用 C+编程语言,而不需要把过多的精力投入到学习复杂的 Windows 编程中去。实验步骤实验步骤1)创建第一个应用创建第一个应用首先创建一个项目(project) ,项目将代表你的应用,存放你应用的所有信息,包括源文件、资源文件、编译连接设置等。创建项目的步骤为:(1)

29、启动 Developer Studio(2) 从主菜单中选择 File|New,将显示出 New 对话框(3) 选择 Projects 标签,并从列表中单击 Win32 Console Application(4) 在“Location”编辑框中输入你的工作目录名称,如 c:studentyour_name(问你的指导教师)(5) 在对话框的右上角的“project name”编辑框内键入项目的名字,如”Hello”,系统将自动为你的项目分配一个默认的目录(6) 单击 OK 继续(7) 如果是 VC 6.0,系统将显示一个询问项目类型的程序向导,选择“an empty 10project”(8

30、) 单击 Finish 或 OK 结束配置,创建应用程序这时系统为你创建一个新的项目,并且在左边的工作区窗口中将出现你项目的名字。工作区窗口除原来的 InfoView 标签外又增加了两个标签(如果是 Visual C+6.0,则没有InfoView 标签):ClassView 和 FileView。ClassView 从类的角度显示项目中建立的各个类,双击某个类名将会在右边的文档显示区显示类的定义文件并把文件的当前位置定位到所选的类;FileView 显示构成项目的各个文件,选择某一文件将会在右边的文档显示区显示文件内容;InfoView 是 VC5 的帮助文件目录,在这里可以选择所要获取帮助

31、的标题,在右边将显示帮助内容。2)编辑你的第一个编辑你的第一个 C+源程序源程序用下面的方法在你创建的项目中添加一个文件:(1) 在主菜单上选择 File|New(2) 在 New 对话框中选择 File 标签,单击“C+ Source File”(3) 选中 Add to Project 复选框(4) 在右边的 File name 编辑框中为文件指定一个名字,如 Hello,系统将自动为你加上后缀.cpp。新的空白文件将自动打开,显示在文档显示区。在文件中输入以下内容(不包括上下两条横线):/hello world example#include int main() cout hello!

32、TextOut(50,50,Hello, World);(5)按 Ctrl+s 或者选菜单 File|Save 来保存所作的修改5)编译连接并运行编译连接并运行重新编译连接该项目,运行程序,你可以用 Ctrl+F5 直接运行程序,系统将询问你是否重新编译该项目,回答“是(Yes) ” ,如果有编译错误,仔细检查你加的一句话,是否有错。当编译连接通过后,系统会自动运行该程序。结果与上面有什么不同?经过上述修改后,程序可以输出一行文字“Hello, World”。这是你实现的第一个Windows 程序!是不是很简单?!不要担心有很多不懂的地方,后面的实验中你会慢慢理解。现在你应该会觉得:哦,原来

33、Windows 程序的开发这么简单!4. 编写简单的计算程序输入圆的半径,计算圆的周长和面积并输出。测试数据测试数据14输入:2输出:The perimeter of the circle : 12.5664The area of the circle : 12.5664输入:10输出:The perimeter of the circle : 62.8318The area of the circle : 314.159实验步骤实验步骤1)创建一个控制台项目创建一个控制台项目选择菜单 File|New,在 Projects 标签下选择 Windows32 Console Applicatio

34、n,输入项目名称“circle”,然后按 OK2)在项目中增加一个文件在项目中增加一个文件选择菜单 File|New,在 Files 标签下选择 C/C+ Source File,输入文件名称“circle”,然后按 OK3)在文件中输入以下内容在文件中输入以下内容/-/该程序让用户输入圆的半径 Radius,输出圆的周长 Perimeter 和面积 Area#include #include const double PI = 3.14159;/定义一个常量 PIint main() int radius;double perimeter, area;cout radius;perimete

35、r = 2 * PI * radius;/周长=2Rarea = PI * pow(radius, 2);/面积=R2cout The perimeter of the circle : perimeter endl;cout The area of the circle : area endl;return 0;注:power(radius,2)表示求radius的平方,power(x, y)是系统预定义的函数,该函数计算x的y次方。该函数的原型在文件math.h中说明。4)编译、连接并运行程序编译、连接并运行程序如果你输入的程序有误,用下面的方法定位并修改错误。直到编译连接通过。运行程序,

36、测试数据。编译和连接错误定位编译和连接错误定位开发环境下方的输出窗口(Output)显示编译和连接过程中出现的错误,错误信息包括:错误出现的文件名、行号、错误代码。如果不懂错误消息,将光标移动到该错误信息,按 F1,就可以显示该错误的帮助信息。在 output 窗口,双击错误或者选择该错误再按 ENTER 键,系统自动将光标移动到发生15错误的源程序行,你然后就可以改正错误。F4 键可以选择并定位下一个错误思考问题思考问题(1)程序中为什么要将头文件 math.h 包含进来?(2)建立控制台应用程序的通用步骤是怎样的?实验二实验二 简单程序开发简单程序开发实验目的实验目的了解基本数据类型的字节

37、宽度和范围表示理解并掌握程序的分支、循环结构提高程序可读性学习过程化程序设计方法进一步学习掌握查找与修改编译错误的方法初步学习调试方法实验内容实验内容1. 基本数据类型的长度编写一个程序,输出基本数据类型 char, short, int, long, float, double 和指针类型 void *, char *, short *, int *, long *, float *, double *的数据类型的长度。实现要求实现要求:搞清你所使用系统上运行的 C+编译器中每个基本数据类型的长度。实现提示实现提示:利用函数 sizeof(数据类型名)来得到各个数据类型的长度编辑技巧Visu

38、al C+编辑器功能非常强大,它具有许多优点,你可以在不断的探索中对其了解。下面的特点你可能已有所体会:自动语法。用高亮度和不同颜色的字来显示关键字和注释内容自动缩进。帮助你排列源代码,使其可读性更强参数帮助。显示预定义的 windows 函数的参数集成的关键字帮助。能够使你得到任何关键字、MFC 类或 Windows 函数的帮助信息(按 F1 即可)拖放编辑自动错误定位。能自动将光标移动到有编译错误的源代码处。 拖放拖放编辑编辑在本次实验中非常有效,因为你需要写很多类似的代码行,借助于拖放功能,你可以方便地实现代码的移动或复制。具体操作方式为:(1) 将鼠标放置在要复制的内容的开始部分,按下

39、鼠标左键不放,拖动鼠标,直到要复制内容的结束部分,放开鼠标,此时你选的部分成为反显;(2) 将鼠标放在选中内容的任意部位,按下鼠标左键,此时鼠标右下方出现一个虚的16长方形标志,该标志就表示你将要拖动的内容。如果你想复制所选的内容,则再按住Ctrl 键(缺省为移动操作),此时鼠标右下方的长方型标志中间出现了一个十字形;(3) 按住鼠标左键不放,拖动鼠标,你会看到一个虚的光标跟随鼠标移动,将它移动到想要放代码的新位置,松开鼠标左键(如果按了 Ctrl 键,在松开鼠标以后再松开按键)。(4) 你所选的代码就可以移动(或复制)到新的位置。思考问题思考问题为什么所有的指针长度一样?2. 循环与分支结构

40、编写一个程序,循环从标准输入读入某雇员的工作时间(以小时计)和每小时的工资数,计算并输出他的工资。若雇员月工作小时超过40小时,则超过部分按原工资的1.5倍的加班工资来计算。若雇员月工作小时超过50小时,则超过50的部分按原工资的3 倍的加班工资来计算,而40到50小时的工资仍按照原工资的1.5倍的加班工资来计算。测试数据测试数据输入:30 4输出:120输入:45 4.5输出:213.75输入:60 5输出:425输入:0 0程序结束实现要求实现要求(1) 分别用三种循环(for, while, do while)完成程序要求(2) 要求有输入提示和输出提示,如要输入雇员的工作时间和每小时的

41、工资值时,可以提示:“Please input employees work time and wage_per_hour:”输出时,提示:“The employees wage :”。(3) 循环在用户输入的工作时间为 0 时结束。(4) 为你的程序加上注释,使得其清晰可读。(5) 尝试利用调试程序来修改你程序的逻辑错误。实现提示实现提示(1) 可以利用永久循环(while(1)加 break 语句的方式控制程序流程调试(debugging)Visual C+内置了强大的调试功能。调试发生在你已经成功地进行了编译、连接,得到了可执行程序,但是程序执行的结果不正确的情况下。调试是修改你的代码以

42、便它能够正确工作的过程。Developer Studio 提供了许多工具帮助你跟踪和定位错误。调试系统提供特殊的菜单、窗口、对话框等来为开发者提供帮助。调试调试命令命令有关调试的命令分散在 Build、Debug、View 和 Edit 菜单中。Build 菜单包含一个 Start Debug 子菜单,其中的命令是 Debug 菜单命令的子集,包括:启动调试过程(Go)、单步跟踪( 17Step Into) 和运行到光标处( Run To Cursor).当启动调试进程后,Build 菜单会被 Debug 菜单代替,Debug 菜单包含各种控制程序执行的命令,如单步执行、进入函数体、从函数体中

43、出来、运行到光标所在位置等。View 菜单包含一些命令,可以控制显示各种与调试有关的窗口,如变量窗口(Variables window)、调用栈窗口(Call Stack window)等。Edit 菜单下的Breakpoints 命令可以打开一个对话框,在其中可以插入、删除、启动、停止各个断点。设设置断点置断点你可以控制程序直接运行到指定地点,然后查看运行到这个地方时程序的状态,如变量的值、调用栈的情况等。你可以通过设置断点来达到这一目的。设置断点的方式是:将光标移到要设置断点的地方,按 F9,这时会有一个红的圆点出现在代码行的左边。如果你想取消断点,将光标移动到设置断点的代码行,按 F9。

44、启启动调试动调试按 F5 或者在 Build 菜单中,选择 Start Debug 然后选择 Go,就可以启动调试程序。程序会一直运行到需要用户输入或者有断点的代码处。查查看看变变量量值值查看变量值有多种方式,你可以选择你喜欢的方式进行。1)你可以将鼠标移动到程序的变量名处,系统会自动为你显示变量的值;2)复杂变量(如对象)可以通过 QuickWatch 查看,方法是:将光标定位到所要查看值的变量处,按鼠标右键,选择 QuickWatch 菜单,就可以看到变量值。3)启动调试程序后,屏幕下方将会出现两个输出窗口,一个是 Watch,另一个是Variable。Watch 窗口显示变量名和变量值,

45、你可以在 Watch 窗口中加上你想观察值的变量名,也可以直接从源代码中选择变量名,并把它拖动到 Watch 窗口中。Variable 窗口显示程序当前运行上下文涉及的变量的值。 控制程序控制程序执执行行你可以控制程序单步执行(F10)、跟踪到一个函数内部(F11)、从一个函数运行出来(shift+F11)、运行到光标所在位置(Ctrl+F10),以便方便地调试程序。这些命令用于在某个局部范围详细地调试程序。你也可以通过设置断点(F9)然后用直接运行(GO 或者 F5)来控制程序直接运行到断点位置。如果你设置了多个断点,程序将会在遇到的第一个断点处停下来。要从断点处继续运行,可以用上面所说的各

46、种命令(F5, F10, F11, Shift+F11, Ctrl+F10)。 结结束束调试调试要结束调试,可以按 shift+F5 或者选择菜单 Debug|Stop Debugging。当结束调试后,所有调试窗口会自动关闭,Debug 菜单也会自动还原为 Build 菜单。思考问题思考问题(1) 哪种循环语句最适合本应用?如果已经知道要计算的雇员的数目(如 5 个) ,用哪种循环方便?(2) 本实验能否用 switch 语句完成对输入值的判断?实验三实验三 函数与程序结构函数与程序结构实验目的实验目的掌握函数声明、定义和使用的方法掌握函数递归调用的方法掌握全局变量、局部变量、静态变量的使用

47、方法掌握内联函数、重载函数及默认函数参数的使用方法18掌握自定义头文件的方法,学会建立和调试多文件程序实验内容实验内容1. 分析程序运行结果输入下列程序,运行它,分析得到的结果。#include int n = 0;int func(int x = 10);void main()int a,b;a = 5;b = func(a);cout nlocal a= a endl local b= bendl global n= nendl;a+;b = func(a);cout nlocal a= a endl local b= bendl global n= nendl;func();int fu

48、nc(int x )int a=1;static int b=10;a+;b+;x+;n+;cout nlocal a= a endl local b= bendl parameter x= x =1 并且 n=r;(4)上面的测试数据能得到正确结果。 实验步骤实验步骤(1) 利用一个非递归函数 fn(int n)计算 n!,利用另一个函数 Cnr(int n, int r)计算 Cnr,在该函数中调用 fn(),问题:你打算用什么样的变量类型来存放n!函数返回的值?注意各种数据类型的内存字长不同,整数能存放的数据范围有限,你如何解决?(2) 利用一个递归函数实现,实现时利用公式:C(n,r)

49、 = C(n, r-1) * (n r + 1) / r递归实现.实现提示实现提示:(1) 可以用 double 数据类型来存放函数的计算结果(2) 递归结束条件:如果 r = 0 ,则 C(n, r) = 1如果 r = 1, 则 C(n, r) = n 思考问题思考问题(1) 你对各种数据类型的字长是否有了新的认识?(2) 递归函数的书写要点是什么?(3) 你觉得递归和非递归函数哪种好些?3. 将上面的程序改成多文件结构实验要求实验要求Cnrnrnr!*()!20将上面用非递归方式写成的程序改成用多文件结构表示。要求将 main()函数放在一个文件中,将另外两个函数放在另一个文件中,将函数

50、原型说明放在一个头文件中。建立一个项目,将这三个文件加到你的项目中,编译连接使你的程序正常运行。 实验步骤实验步骤(1) 新建一个项目,命名为“multifile”(2) 用 File|New 创建一个新的”C+ Source File”,命名为 main.cpp(3) 用 File|New 创建一个新的”C+ Source File”,命名为 func.cpp(4) 用 File|New 创建一个新的”C/C+ Header File”,命名为 func.h(5) 用 File|Open 打开你前面实验中用非递归方式求 C(n,r)的 C+源程序文件,将其中的主函数部分拷贝到 main.cp

51、p 中,将其中的两个函数实现放到 func.cpp 中,再将两个函数的原型写到 func.h 中(6) 在 main.cpp 中包含进头文件:#include “func.h”(7) 编译连接该项目,运行它。你得到的结果应该和上一个实验一样。思考问题思考问题(1) 多文件结构中头文件的作用是什么?(2) 将程序划分为多个文件有什么好处?实验四实验四 复杂数据类型复杂数据类型实验目的实验目的学习数组的定义、初始化、赋值和使用的方法学习给函数传递数组的方法学习指针和引用的定义和使用方法学习字符串的使用方法学习用指针和引用给函数传递参数实验内容实验内容1. 数组排序从键盘读入若干整数,将它们按由低到

52、高排序输出。测试数据测试数据:程序先输出:Please input array number:用户输入:5程序再输出:Please input all the integer:用户输入:300 700 600 450 500程序输出:300 450 500 600 700实现要求实现要求:(1) 用一个数组存放各个整数;(2) 在主函数 main()中实现数据的输入和输出操作,并用一个函数实现对数组元素的排序操作。(3) 排序函数调用另一个函数 swap()实现两个数组元素的交换。可以使用指针、引用21两种方式实现函数参数的传递:swap(int *pa, int *pb);swap(int

53、& a, int & b);实现提示实现提示:排序可以用最简单的选择排序法:选择选择排序法:排序法:1)从 n 个数中选择最小的一个,把它和第一个数组元素交换;2)从剩下的 n-1 个数中选择最小的一个,把它和第二个数组元素交换;3)依此类推,直到从最后两个元素中选出倒数第二小的元素并把它和倒数第二个元素交换为止。如要按选择排序法对数组 30 50 21 39 20 排序,则各趟排序后的结果如下所示(带下划线的数表示参加交换的数):开始:30 50 21 39 20第一趟排序:20 50 21 39 30第二趟排序:20 21 50 39 30第三趟排序:20 21 30 39 50第四趟排序

54、:20 21 30 39 50实验步骤实验步骤(1) 用数组实现程序要求说明:用一个长度为 10 的数组存放待排序的数据,数组的定义为int iArray10;数组排序函数的原型为:void sort(int num, int iArray);其中 num 表示数组元素的个数,iArray 是数组。(2) 用动态申请空间的方式实现程序要求。说明:使用指针来实现前面数组的功能int *piArray;piArray = new intnum;其中数组的大小 num 需要由用户预先输入。思考问题思考问题(1) 上面两种实现方式对程序的改动大吗?(2) 尝试用不同的方式访问数组中的元素iArrayi

55、, *(iArray+i), piArrayi, *(piArray+i), (3) iArray 和 piArray 有何共同点?2. 字符排序修改上面的程序,将数组的操作改为对字符串操作,即从键盘输入一串字符,将它们存放在字符数组中(形成一个字符串) ,然后对字符数组中的各个字符排序。测试数据测试数据:输入内容:kapdobc输出内容:abcdkop实现要求实现要求:22(1) 用字符数组代替上一个实验的整数数组;(2) 不要先输入字符串的长度,在程序中自动计算出字符串的长度。实现提示实现提示:(1) 字符串的输入输出操作可以简化,不用一个字符一个字符的输入输出(2) 字符的长度可以借助于

56、预定义的函数 strlen()求出,该函数所在的库函数名为string.h思考问题思考问题对字符的比较遵循什么样的约定(为什么字符 a 比字符 b 小)?3. 字符串操作要求和上面类似,但数组中的元素变为字符串。程序对已有的字符串进行排序,并输出排序后的结果。字符串数组中的元素为:January, February, March, April, May, June, July, September 测试数据测试数据:程序直接输出排序后的结果:MayJuly JuneAprilMarchJanuaryFebrurarySeptember 实现要求实现要求:(1) 排序的规则为:先比较两个字符串的

57、长度,长度短的字符串排在前面,如果长度相等,则比较字符串的值,按从小到大排序输出。(2) 用字符串数组存放各字符串,并在定义数组时对其进行初始化(3) 利用库函数 qsort 实现排序操作 实现提示实现提示:(1) 使用库函数 qsort 必须包含头文件;(2) qsort 的函数原型为:void qsort(void *base,/所要排序的数组第一个元素的地址 size_t nelem,/要排序的元素的个数 size_t width,/要排序的元素的宽度 int (*fcmp)(const void *, const void *);/用于比较元素大小的函数名字其中,比较数组元素大小的函数

58、原型为:int (*fcmp)(const void *, const void *);其两个参数分别指向两个要比较的数,结果用小于零、等于零和大于零分别表示第一个数小于、等于和大于第二个数。你需要定义自己的字符串比较函数,其原型和上面的一样。函数的定义如下:int sort_function( const void *a, const void *b) if (strlen(char *)a) != strlen(char *)b)return strlen(char *)a) - strlen(char *)b);23 return( strcmp(char *)a,(char *)b)

59、); 思考问题思考问题如果让你来实现 qsort 函数的功能,如何实现?实验五实验五 结构和类结构和类实验目的实验目的学习结构的定义和使用学习使用结构构建链表式数据结构理解结构与指针的关系学习类的定义、实例化的方法学习使用构造函数和析构函数学习类成员访问控制的运用学习使用静态成员、内联成员函数学习堆对象的分配、使用与释放体会面向对象程序设计方法进一步熟悉 Visual C+的编译连接错误,掌握 Visual C+调试工具实验内容实验内容1. 用结构构建链表设计一个单向链表。从标准输入读取若干整数,建立链表,每次读入的数放入链表结每次读入的数放入链表结尾尾。当用户输入 0 时,结束链表的建立工作

60、。然后从前往后依次输出链表节点中的内容。链表的结构类似于下图:每个节点包含两个值,一个是真正存放的整数值,另一个为指向链表中下一个节点的指针。链表中最后一个节点不指向任何节点,所以指针为空(NULL) 。表头指针和表尾指针分别指向链表的头节点和尾节点。测试数据测试数据程序输出:Please input integers to build the link(0 TO END):用户输入:3 4 5 6 7 8 9 0程序输出:Link elements:3 4 5 6 7 8 9实现要求实现要求(1) 用链表存放输入的整数。链表节点空间动态申请链表节点空间动态申请。链表节点结构和链表数据类型的参

61、考定义为:/定义链表节点类型typedef struct nodeint elem;struct node *next;表尾指针表头指针115643424 Node;/定义链表类型typedef Node * Link;(2) 在链表建立结束后,输出链表节点内容的同时释放节点空间。释放节点空间。(3) 处理申请不到空间的情况。实现提示实现提示(1) 因为每次插入节点是在链表尾,而输出链表是从链表头,所以可以用两个指针记录链表。一个为头指针,一个为尾指针。(2) 第一次插入节点时需要考虑链表为空的情况。(3) 建立一个新节点的过程为:/ 建立一个新的节点Node * pNode = new No

62、de;if (pNode = NULL) cout elem = k;pNode-next = NULL;(4) 顺序遍历链表的过程为:Node *pNode = head;while (pNode != NULL) 访问 pNode 所指节点的内容;pNode = pNode-next;(5) 将新节点加到链表中的过程为:if (head = NULL)head = tail = pNode;else tail-next = pNode;tail = pNode; 思考问题思考问题(1) 如果是双向链表,程序要做那些改动?双向链表的示意图如下:2. 队列类设计一个队列类,模拟实际生活的队列,

63、队列中的元素服从先进先出的规则。每次有新的元素入列时,就放在队列尾。元素出列时,从队列头出。开始时队列为空。队列的示意图为:表尾指针表头指针115643425测试数据测试数据 输出结果:Queue empty:Yes4 elements enter queueQueue empty:No2 elements leave queue:0 12 elements enter queueElements left:2 3 4 5实现要求实现要求(1) 利用上一实验设计的链表结构存放队列类中的队列元素。也即队列元素的空间是动态申请的。(2) 在构造队列对象时,初始化该链表,在析构队列对象时,释放链表所

64、占的空间。(3) 队列类用单独的文件”queue.cpp”实现,队列类的定义放在一个头文件”queue.h”中,主文件名为 main.cpp。(4) 队列类中的元素为整数,并提供以下服务:void put (int newVal); /在队尾加入一个新元素int get ( ); /取出队头元素,并释放节点空间并释放节点空间int getCount(); /取队列中元素的个数bool empty();/判断队列是否为空bool 是 Visual C+定义的数据类型,它其实是一种整数类型。具有 bool 类型的变量只有两种值:true 或 false。一个条件表达式返回的值就是 bool 类型的

65、。如表达式 i!=0 在 i 的值为 0 时返回 false,在不为 0 时返回 true。要求将函数 empty()和 getCount()定义为内联函数,另外两个定义为非内联函数。数据成员全定义为私有成员或保护成员。(5) 使用队列类的主程序为:#include #include queue.hint main() Queue q;int i;/输出队列是否为空cout Queue empty:;if (q.empty()队头指针队尾指针出队列入队列26cout Yes endl;elsecout No endl;/往队列中依次放入四个数cout endl 4 elements enter

66、 queue endl;for(i = 0; i 4; i+)q.put(i);/输出队列是否为空cout Queue empty:;if (q.empty()cout Yes endl;elsecout No endl;/取出两个数cout endl 2 elements leave queue:;cout q.get() ;cout q.get() ;/再放入两个数cout endl 2 elements enter queue endl;q.put(4);q.put(5);/按顺序输出剩下的队列成员cout Elements left: ;int num = q.getCount();for(i = 0; i num; i+)cout q.get() ;cout endl;return 0;实现提示实现提示(1) 队列中使用的链表定义为: /定义链表节点类型typedef struct nodeint data;struct node *next; QueueDataNode;/定义链表类型27typedef QueueDataNode * QueueData;队列类的私有数据成

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!