山东理工大学:《面向对象程序设计》课程实验指导书(C++)

《面向对象程序设计(C++)》实验指导书山东理工大学计数学与统计学院2008年09月
《面向对象程序设计(C++)》 实验指导书 山东理工大学计数学与统计学院 2008 年 09 月

目录第一部分VisualC++实验环境介绍.2一、VisualC++简介21.VisualC++集成开发环境(IDE)22.向导(Wizard)23.MFC库.3二、项目开发过程.3三、集成开发环境,四、常用功能健及其意义,5第二部分上机实验内容6实验一类和对象,6实验二派生类与继承10实验三多态性...15实验四运算符重载.17实验五模板与异常处理...20实验六标准库和输入/输出流,..22实验七综合应用—一利用指针、模板设计通用链表以及类。..25实验八用VC制作自己的屏幕保护.26.26一、程序代码编写提示.二、代码编译调试..57.63三、制作你自己的屏保.附录程序编写风格规范参考,67
1 目 录 第一部分 Visual C++实验环境介绍.2 一、Visual C++简介 . 2 1.Visual C++集成开发环境(IDE) . 2 2.向导(Wizard) . 2 3.MFC 库 . 3 二、项目开发过程 . 3 三、集成开发环境 . 4 四、常用功能健及其意义 . 5 第二部分 上机实验内容 .6 实验一 类和对象 . 6 实验二 派生类与继承.10 实验三 多态性 .15 实验四 运算符重载 .17 实验五 模板与异常处理 .20 实验六 标准库和输入/输出流 .22 实验七 综合应用——利用指针、模板设计通用链表以及类 .25 实验八 用 VC 制作自己的屏幕保护 .26 一、程序代码编写提示 .26 二、代码编译调试 .57 三、制作你自己的屏保 .63 附录 程序编写风格规范参考 .67

第一部分VisualC++实验环境介绍一、VisualC++简介VisualC++是Microsoft公司的VisualStudio开发工具箱中的一个C++程序开发包。VisualStudio提供了一整套开发Internet和windows应用程序的工具,包括VisualC++,VisualBasic,VisualFoxProVisualInterDev,VisualJ++以及其他辅助工具,如代码管理工具VisualSourceSafe和联机帮助系统MSDN。VisualC++包中除包括C++编译器外,述包括所有的库、例子和为创建windows应用程序所需要的文档。从最早期的1.0版本,发展到最新的6.0版本,VisualC++已经有了很大的变化,在界面、功能、库支持方面都有许多的增强。最新的6.0版本在编译器、MFC类库、编辑器以及联机帮助系统等方面都比以前的版本做了较大改进。VisualC++一般分为三个版本:学习版、专业版和企业版,不同的版本适合于不同类型的应用开发。实验中可以使用这三个版本的任意一种。1.VisualC++集成开发环境(IDE)集成开发环境(IDE)是一个将程序编辑器、编译器、调试工具和其他建立应用程序的工具集成在一起的用于开发应用程序的软件系统。visualC++软件包中的DeveloperStudio就是一个集成开发环境,它集成了各种开发工具和VC编译器。程序员可以在不高开该环境的情况下编辑、编译、调试和运行一个应用程序。IDE中还提供大量在线帮助信息协助程序员做好开发工作。DeveloperStudio中除了程序编辑器、资源编辑器、编译器、调试器外,还有各种工具和向导(如Appwizard和Classwizard),以及MFC类库,这些都可以帮助程序员快速而正确地开发出应用程序。2.向导(Wizard)向导是一个通过一步步的帮助引导你工作的工具。DeveloperStudio中包含三个向导,用来帮助程序员开发简单的windows程序,它们是:Appwizard:用来创建一个windows程序的基本框架结构。Appwizard向导会一步步向程序员提出间题,询问他所创建的项目的特征,然后Appwizard会根据这些特征自动生成一个可以执行的程序框架,程序员然后可以在这个框架下进一步填充内容。Appwizard支持三类程序:基于视图/文档结构的单文档应用、基于视图/文档结构的多文档应用程序和基于对话框的应用程序。也可以利用Appwizard生成最简单的控制台应用程序(类似于DOS下用字符输入输出的程序)。2
2 第一部分 Visual C++实验环境介绍 一、Visual C++简介 Visual C++是 Microsoft 公司的 Visual Studio 开发工具箱中的一个 C++程序开发包。 Visual Studio 提供了一整套开发 Internet 和 Windows 应用程序的工具,包括 Visual C++, 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++一般分为三个版本:学习版、专业版和企业版,不同的版本适合于不同类 型的应用开发。 实验中可以使用这三个版本的任意一种。 1.Visual C++集成开发环境(IDE) 集成开发环境(IDE)是一个将程序编辑器、编译器、调试工具和其他建立应用程序的 工具集成在一起 的用于开发应用程序的软件系统。Visual C++软件包中的 Developer Studio 就是一个集成开发环境,它集 成了各种开发工具和 VC 编译器。程序员可以在不离开该环境 的情况下编辑、编译、调试和运行一个应用程 序。IDE 中还提供大量在线帮助信息协助程序 员做好开发工作。Developer Studio 中除了程序编辑器、资 源编辑器、编译器、调试器外, 还有各种工具和向导(如 AppWizard 和 ClassWizard),以及 MFC 类库, 这些都可以帮助程 序员快速而正确地开发出应用程序。 2.向导(Wizard) 向导是一个通过一步步的帮助引导你工作的工具。Developer Studio 中包含三个向导, 用来帮助程序 员开发简单的 Windows 程序,它们是: AppWizard:用来创建一个 Windows 程序的基本框架结构。AppWizard 向导会一步步向 程序员提出问 题,询问他所创建的项目的特征,然后 AppWizard 会根据这些特征自动生成 一个可以执行的程序框架,程 序员然后可以在这个框架下进一步填充内容。AppWizard 支持 三类程序:基于视图/文档结构的单文档应用、 基于视图/文档结构的多文档应用程序和基 于对话框的应用程序。也可以利用 AppWizard 生成最简单的控 制台应用程序(类似于 DOS 下用字符输入输出的程序)

Classwizard:用来定义Appwizard所创建的程序中的类。可以利用Classwizard在项目中增加类、为类增加处理消息的函数等。ClassWizard也可以管理包含在对话框中的控件,它可以将MFC对象或者类的成员变量与对话框中的控件联系起来。ActivexControlwizard:用于创建一个Activex控件的基本框架结构。Activex控件是用户自定义的控件,它支持一系列定义的接口,可以作为一个可再利用的组件。3.MFC库库(library)是可以重复使用的源代码和目标代码的集合。MFC(MicrosoftFundamentalClasses)是VisualC++开发环境所带的类库,在该类库中提供了大量的类,可以帮助开发人员快速建立应用程序。这些类可以提供程序框架、进行文件和数据库操作、建立网络连接、进行绘图和打印等各种通用的应用程序操作。使用MFC库开发应用程序可以减少很多工作量。二、项目开发过程在一个集成的开发环境中开发项目非常容易。一个用C++开发的项目的通用开发过程可以用左图表示。建立一个项目的第一步是利用编辑器建立程序代码文件,包括头文件、代码文件、资源文件等。然后,启动编译程序,编译程序首先调用预处理程序处理程序中的预处理命令(如#include,#define等),经过预处理程序处理的代码将作为编译程序的输入。编译对用户程序进行词法和语法分析,建立目标文件,文件中包括机器代码、连接指令、外部引用以及从该源文件中产生的函数和数据名。此后,连接程序将所有的目标代码和用到的静态连接库的代码连接起来,为所有的外部变量和函数找到其提供地点,最后产生一个可执行文件。一般有一个makefile文件来协调各个部分产生可执行文件。可执行文件分为两种版本:Debug和Release。Debug版本用于程序的开发过程,该版本产生的可执行程序带有大量的调试信息,可以供调试程序使用,而Release版本作为最终的发行版本,没有调试信息,并且带有某种形式的优化。学员在上机实习过程中可以采用Debug版本,这样便于调试。选择是产生Debug版本还是Release版本的方法是:在DeveloperStudio中选择菜单Build|SetActiveConfiguration,在弹出的对话框中,选择所要的类型,然后选择OK关闭对话框。Visua1C++集成开发环境中集成了编辑器、编译器、连接器以及调试程序,覆盖了的开发应用程序的整个过程,程序员不需要脱离这个开发环境就可以开发出完整的应用程序
3 ClassWizard:用来定义 AppWizard 所创建的程序中的类。可以利用 ClassWizard 在项 目中增加类、为类增加处理消息的函数等。ClassWizard 也可以管理包含在对话框中的控件, 它可以将 MFC 对象或者类的成员变量与对话框中的控件联系起来。 ActiveX Control Wizard:用于创建一个 ActiveX 控件的基本框架结构。ActiveX 控件 是用户自定义 的控件,它支持一系列定义的接口,可以作为一个可再利用的组件。 3.MFC 库 库(library)是可以重复使用的源代码和目标代码的集合。MFC(Microsoft Fundamental Classes)是 Visual C++开发环境所带的类库,在该类库中提供了大量的类,可以帮助开发 人 员快速建立应用程序。这些类可以提供程序框架、进行文件和数据库操作、建立网络连 接、 进行绘图和打印等各种通用的应用程序操作。使用 MFC 库开发应用程序可以减少很多 工作 量。 二、项目开发过程 在一个集成的开发环境中开发项目非常容易。一个用 C++开发的项目的通用开发过程可 以用左图表示。建立一个项目的第一步是利用编辑器建立程序代码文件,包括头文件、代 码 文件、资源文件等。然后,启动编译程序,编译程序首先调用预处理程序处理程序中的 预处理命令(如#include, #define 等),经过预处理程序处理的代码将作为编译程序的输 入。编译对用户程序进行词法和语法分析,建立目标文件,文件中包括机器代码、连接指 令、外部引用以及从该源文件中产生的函数和数据名。此后,连接程序将所有的目标代码 和用到的静态连接库的代码连接起来,为所有的外部变量和函数找到其提供地点,最后产 生一个可执行文件。一般有一个 makefile 文件来协调各个部分产生可执行文件。可执行文 件分为两种版本:Debug 和 Release。Debug 版本用于程序的开发过程,该版本产生的可执 行程序带有大量的调试信息,可以供调试程序使用,而 Release 版本作为最终的发行版本, 没有调试信息,并且带有某种形式的优化。学员在上机实习过程中可以采用 Debug 版本, 这样便于调试。选择是产生 Debug 版本还是 Release 版本的方法是:在 Developer Studio 中选择菜单 Build|Set Active Configuration,在弹出的对话框中,选择所要的类型,然 后选择 OK 关闭对话框。 Visual C++ 集成开发环境中集成了编辑器、编译器、连接器以及 调试程序,覆盖了的开发应用程序的整个过程,程序员不需要脱离这个开发环境就可以开 发出完整的应用程序

Editor4SourceMakefiloHeaderFileshello.cppiostreamh4Preproces sorCompilerObjectFile.hello.obj+Objedt FiesLinkerLibrariesmibcewq.lib11Rolease VersionDebug Versionhello.exehello.exe三、集成开发环境进入DeveloperStudio如果你使用的是VisualC++6.0,则要进入DeveloperStudio,需要单击任务栏中“开始”后选择“程序”,找到MicrosoftVisualStudio6.0文件夹后,单击其中的MicrosoftVisualC++6.0图标,则可以启动DeveloperStudio。DeveloperStudio使用MicrosoftDeveloperNetwork(MSDN)库(需要先行安装)作为它的联机帮助系统。其界面如下:licrosoft Visual ct6E区zileBit yieTuetbrejot put fodr Yindw Belt中国ena日axe2:8ABuildpebur XFind in FilexFind in.Filex.2XRozultaaReady4
4 三、集成开发环境 进入 Developer Studio 如果你使用的是 Visual C++ 6.0,则要进入 Developer Studio, 需要单击任务栏中“开始”后选择“程序”,找到 Microsoft Visual Studio 6.0 文件夹 后,单击其中的 Microsoft Visual C++6.0 图标,则可以启动 Developer Studio。Developer Studio 使用 Microsoft Developer Network(MSDN)库(需要先行安装)作为它的联机帮助 系统。其界面如下:

总的来说,窗口和命令接口(包括工具条和菜单条)是构成面的最主要组成部分。通常有两种窗口:文档窗口和可附着(docking)窗口。文档窗口显示在文档窗口区,用于显示和编辑文档,其的大小和位置可以随其所处的DeveloperStudio窗口的改变而改变,可以最大化和最小化。可附着窗口可以附着于应用程序窗口的边界,也可以浮在屏幕上的任何位置。可附窗口有:工作区(workspace)窗口,输出(output)窗口,调试窗口(包括variable,watch,local等窗口)等。文档窗口的位置、大小及是否可见和它所在的项目有关,docking窗口的位置、大小及是否可见则与项目进行的状态以及各种编辑和调试的操作有关。各种窗口和各种工具条以及菜单构成了界面的布局。一旦用户决定了一种界面布局,系统就会为一直为用户保持这种布局,直到用户下一次改变该布局为止。获得帮助信息大多数时候,你可以通过按F1得到上下文帮助。如在编辑文件时按F1可以得到有关编辑的帮助,在编译连接错误信息上按F1可以得到关于该错误的帮助信息。如果想系统地获得帮助,VC6中,可以通过选择菜单Help|Contents来启动MSDN查阅器,MSDN查阅器是一个功能强大的程序,可以方便地浏览、查找信息,要想知道具体如何使用MSDN查阅器,可以在MSDN查阅器中选菜单Help下的命令。VisualC++的编辑器DeveloperStudio包含一个功能强大的编辑器,可以编辑将被编译成windows程序的VisualC++源文件。这个编辑器有点像字处理器,但是没有字处理器具备的复杂的排版、文本格式等功能,它注重的是如何帮助程序员快速高效地编制程序。它具有以下特点:自动语法。用高亮度和不同颜色的字来显示不同的语法成分,如注释、关键字和一般代码用不同的颜色显示自动缩进。帮助你排列源代码,使其可读性更强参数帮助。在编辑时用到预定义的windows函数时,可以自动为你显示函数参数集成的关键字帮助。能够使你快速得到任何关键字、MFC类或windows函数的帮助信息(按F1即可)拖放编辑。能够用鼠标选择文本并自由拖动到在意位置自动错误定位。能自动将光标移动到有编译错误的源代码处。当你打开一个源代码文件时,就可以利用编辑器对其进行编辑。源代码文件在文档显示区显示,每个文件有独立的显示窗口。如果你选择用其他编辑器编辑源文件,必须将它以纯文本的方式保存。VC的编译器不能处理其中有特别格式字符的文件。四、常用功能健及其意义为了便程序员能够方便快捷地完成程序开发,开发环境提供了大量快捷方式来简化一些带用操作的步骤。键盘操作直接、简单,而且非常方便,因而程序员非常喜欢采用键盘命令来控制操作。下面是一些最常用的功能键,希望学员在实验中逐步掌握。操作类型功能键含义对应菜单文件操作Ctr1+NFile|New创建新的文件、项目等Ctr1+0Filelopen打开项目、文件等Ctr1+SFile|Save保存当前文件剪切Edit/Cut编辑操作Ctrl+X复制Ctr1+CEditCopy
5 总的来说,窗口和命令接口(包括工具条和菜单条)是构成界面的最主要组成部分。 通 常有两种窗口:文档窗口和可附着(docking)窗口。文档窗口显示在文档窗口区,用于 显 示和编辑文档,其的大小和位置可以随其所处的 Developer Studio 窗口的改变而改变, 可以最大化和最小化。可附着窗口可以附着于应用程序窗口的边界,也可以浮在屏幕上的 任 何位置。可附着窗口有:工作区(workspace)窗口,输出(output)窗口,调试窗口(包 括 variable, watch, local 等窗口)等。文档窗口的位置、大小及是否可见和它所在的项 目有关,docking 窗口的位置、大小及是否可见则与项目进行的状态以及各种编辑和调试的 操作有关。各种窗口和各种工具条以及菜单构成了界面的布局。一旦用户决定了一种界面 布 局,系统就会为一直为用户保持这种布局,直到用户下一次改变该布局为止。获得帮助 信息 大多数时候,你可以通过按 F1 得到上下文帮助。如在编辑文件时按 F1 可以得到有关 编 辑的帮助,在编译连接错误信息上按 F1 可以得到关于该错误的帮助信息。如果想系统地 获 得帮助,VC6 中,可以通过选择菜单 Help|Contents 来启动 MSDN 查阅器,MSDN 查阅器是 一个功能强大的程序,可以方便地浏览、查找信息,要想知道具体如何使用 MSDN 查阅器, 可以在 MSDN 查阅器中选菜单 Help 下的命令。Visual C++的编辑器 Developer Studio 包含 一个功能强大的编辑器,可以编辑将被编译成 Windows 程序的 Visual C++源文件。这个编 辑器有点像字处理器,但是没有字处理器具备的复杂的排版、文本格式等功能,它注重的 是 如何帮助程序员快速高效地编制程序。它具有以下特点:自动语法。用高亮度和不同颜 色的 字来显示不同的语法成分,如注释、关键字和一般代码用不同的颜色显示自动缩进。 帮助你 排列源代码,使其可读性更强参数帮助。在编辑时用到预定义的 windows 函数时, 可以 自动为你显示函数参数集成的关键字帮助。能够使你快速得到任何关键字、MFC 类或 Windows 函数的帮助信息(按 F1 即可)拖放编辑。能够用鼠标选择文本并自由拖动到任意 位置自动错误定位。能自动将光标移动到有编译错误的源代码处。当你打开一个源代码文 件 时,就可以利用编辑器对其进行编辑。源代码文件在文档显示区显示,每个文件有独立 的显 示窗口。如果你选择用其他编辑器编辑源文件,必须将它以纯文本的方式保存。VC 的 编译 器不能处理其中有特别格式字符的文件。 四、常用功能健及其意义 为了使程序员能够方便快捷地完成程序开发,开发环境提供了大量快捷方式来简化一 些常用操作的步骤。键盘操作直接、简单,而且非常方便,因而程序员非常喜欢采用键盘 命令来控制操作。下面是一些最常用的功能键,希望学员在实验中逐步掌握。 操作类型 功能键 对应菜单 含义 文件操作 Ctrl+N File|New 创建新的文件、项目等 Ctrl+O File|Open 打开项目、文件等 Ctrl+S File|Save 保存当前文件 编辑操作 Ctrl+X Edit|Cut 剪切 Ctrl+C Edit|Copy 复制

粘贴Ctr1+VEdit/PasteCtr1+zEdit|Undo撒消上一个操作重复上一个操作Ctr1+YEdit/Redo全选Ctr1+AEdit|SelectAllDeleteEdit/Delete删除光标后面的一个字符建立程序操作Ctr1+F7编译当前源文件BuildCompilercurrentfileCtr1+F5Build|Runexe运行当前项目F7建立可执行程序Build|BuildexeF5Build|StartDebugging启动调试程序F5调试Debug|Go继续运行F11进入函数体内部Debug/StepintoShift+F11Debug/Stepout从函数体内部运行出来F10执行一行语句Debug|StepoverF9设置/清除断点Ctr1+F10Debug|Runtocursor运行到光标所在位置Shift+F9Debug|QuickWatch快速查看变量或表达式的值停止调试Shift+F5Debug|Stopdebugging第二部分上机实验内容实验一类和对象一、实验目的1)理解类和对象的概念,掌握声明类和定义对象的方法;2)掌握构造函数和析构函数的实现方法,3)初步掌握使用类和对象编制C++程序;4)掌握对象数组、对象指针和string类的使用方法;5)掌握使用对象、对象指针和对象引用作为函数参数的方法;6)掌握类对象作为成员的使用方法;7)掌握静态数据成员和静态成员函数的使用方法。6
6 Ctrl+V Edit|Paste 粘贴 Ctrl+Z Edit|Undo 撤消上一个操作 Ctrl+Y Edit|Redo 重复上一个操作 Ctrl+A Edit|SelectAll 全选 Delete Edit|Delete 删除光标后面的一个字符 建立程序操作 Ctrl+F7 Build|Compilercurrentfile 编译当前源文件 Ctrl+F5 Build|Runexe 运行当前项目 F7 Build|Buildexe 建立可执行程序 F5 Build|StartDebugging 启动调试程序 调试 F5 Debug|Go 继续运行 F11 Debug|Stepinto 进入函数体内部 Shift+F11 Debug|Stepout 从函数体内部运行出来 F10 Debug|Stepover 执行一行语句 F9 设置/清除断点 Ctrl+F10 Debug|Runtocursor 运行到光标所在位置 Shift+F9 Debug|QuickWatch 快速查看变量或表达式的值 Shift+F5 Debug|Stopdebugging 停止调试 第二部分 上机实验内容 实验一 类和对象 一、实验目的 1)理解类和对象的概念,掌握声明类和定义对象的方法; 2)掌握构造函数和析构函数的实现方法; 3)初步掌握使用类和对象编制 C++程序; 4)掌握对象数组、对象指针和 string 类的使用方法; 5)掌握使用对象、对象指针和对象引用作为函数参数的方法; 6)掌握类对象作为成员的使用方法; 7)掌握静态数据成员和静态成员函数的使用方法

二、实验内容和步骤1、输入下列程序题目1:#includeusing namespace std;class Coordinate(public:Coordinate(int xl,int y1)x=x1;y=yl;Coordinate(Coordinate &p);~Coordinateo1cout<<"Destructoriscallededln";int getx() (return x,)int getyO) (return y,)private:int x,y,3:Coordinate:Coordinate(Coordinate &p)x=p.x,y=p-y,cout<<"copy-initializationConstructouis calledin"int main()Coordinate pl(3,4);Coordinate p2(p1);Coordinatep3=p2;cout<<"p3=("<<p3.getx0<<""<<p3.gety0<<")|n";return(0);1(1)写出程序的运行结果。(2)将Coordinate类中带有两个参数的构造函数进行修改,在函数体内增添下述语句:cout<<"Constructor is called.In";(3)按下列要求进行调试:在主函数体内,添加下列语句:Coordinate p4;Coordinata p5(2):调试程序时会出现什么错误?为什么?如何对已有的构造函数进行适当修改?7
7 二、实验内容和步骤 1、输入下列程序 题目 1: #include using namespace std; class Coordinate { public: Coordinate(int x1,int y1) { x=x1; y=y1; } Coordinate(Coordinate &p); ~Coordinate() { cout<<”Destructor is calleded\n”; } int getx() {return x;} int gety() {return y;} private: int x,y; }; Coordinate::Coordinate(Coordinate &p) { x=p.x; y=p.y; cout<<”copy-initialization Constructou is called\n”; } int main() { Coordinate p1(3,4); Coordinate p2(p1); Coordinate p3=p2; cout<<”p3=(“<<p3.getx()<<”,”<<p3.gety()<<”)\n”; return(0); } (1)写出程序的运行结果。 (2)将 Coordinate 类中带有两个参数的构造函数进行修改,在函数体内增添下述语句: cout<<”Constructor is called.\n”; (3)按下列要求进行调试:在主函数体内,添加下列语句: Coordinate p4; Coordinata p5(2); 调试程序时会出现什么错误?为什么?如何对已有的构造函数进行适当修改?

(4)经过以上第(2)步和第(3)步的修改后,结合运行结果分析:创建不同的对象时会调用不同的构造函数。题目2:设计一个4×4魔方程序,让魔方的各行值的和等于各列值的和,并且等于两对角线值的和。示例:31352592211991517 131123272917各行、各列以及对角线值的和都是64。[提示]求4X×4魔方的一般步骤如下:(1)设置初始魔方的起始值和相邻元素之间的差值。例如上述魔方的初始魔方的起始值(first)和相邻元素之间的差值(step)分别为:first=1,step=2。(2)设置初始魔方元素的值。例如上述魔方的初始魔方为:13579111331517 19 21123252729931(3)生成最终魔方。方法如下:①求最大元素值与最小元素值的和sum,该实例的sum是:1+31=32②用32减去初始魔方所有对角线上元素的值,然后将结果放在原来的位置,这样就可求得最终度方。本例最终魔方如下:313525921191517131123727291(4)本题的魔方类magic的参考框架如下:class magic1public;void getdataO;void setfirstmagicO);voidgeneratemagicO,void printmagicO);private:int m[4][4];00
8 (4)经过以上第(2)步和第(3)步的修改后,结合运行结果分析:创建不同的对象时会调用不同的构造函 数。 题目 2:设计一个 4×4 魔方程序,让魔方的各行值的和等于各列值的和,并且等于两对 角线值的和。 示例: 31 3 5 25 9 21 19 15 17 13 11 23 7 27 29 1 各行、各列以及对角线值的和都是 64。 [提示] 求 4×4 魔方的一般步骤如下: (1)设置初始魔方的起始值和相邻元素之间的差值。例如上述魔方的初始魔方的起始值(first)和相邻元 素之间的差值(step)分别为:first = 1, step = 2 。 (2)设置初始魔方元素的值。例如上述魔方的初始魔方为: 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 (3)生成最终魔方。方法如下: ①求最大元素值与最小元素值的和 sum,该实例的 sum 是: 1 + 31 = 32 ②用 32 减去初始魔方所有对角线上元素的值,然后将结果放在原来的位置,这样就可求得最终魔方。本 例最终魔方如下: 31 3 5 25 9 21 19 15 17 13 11 23 7 27 29 1 (4)本题的魔方类 magic 的参考框架如下: class magic { public: void getdata(); void setfirstmagic(); void generatemagic(); void printmagic(); private: int m[4][4];

int step,int first,int sum,3;题目3:设计一个用来表示直角坐标系的Location类,在主程序中创建类Location的两个对象A和B,要求A的坐标点在第3象限,B的坐标在第2象限,分别采用成员函数和友元函数计算给定两个坐标点之间的距离,要求按如下格式输出结果。A(x1,y1),B(x2,y2)Distancel-d1Distance1=d2其中:x1、x2、y1、y2为指定的坐标值,d1和d2为两个坐标点之间的距离。[提示]类Location的参考框架如下:class Location1public:Location(double,double);doubleGetx();doubleGety();doubledistance(Location &);friend double distance(Location &, Location &);private:double x,y;1;9
9 int step; int first; int sum; }; 题目 3:设计一个用来表示直角坐标系的 Location 类,在主程序中创建类 Location 的两个 对象 A 和 B,要求 A 的坐标点在第 3 象限,B 的坐标在第 2 象限,分别采用成员函数和友元函 数计算给定两个坐标点之间的距离,要求按如下格式输出结果。 A(x1,y1),B(x2,y2) Distance1=d1 Distance1=d2 其中:x1、x2、y1、y2 为指定的坐标值,d1 和 d2 为两个坐标点之间的距离。 [提示] 类 Location 的参考框架如下:
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《面向对象程序设计》课程教学资源(PPT课件)第11章 继承和派生.ppt
- 《面向对象程序设计》课程教学资源(PPT课件)第10章 类和对象(二).ppt
- 《面向对象程序设计》课程教学资源(PPT课件)第9章 类和对象(一).ppt
- 《面向对象程序设计》课程教学资源(PPT课件)第15章 链表.ppt
- 《面向对象程序设计》课程教学资源(PPT课件)第14章 标准库和输入输出流.ppt
- 《面向对象程序设计》课程教学资源(PPT课件)第13章 模板与异常处理.ppt
- 《面向对象程序设计》课程教学资源(PPT课件)第12章 多态性.ppt
- 《面向对象程序设计》课程教学资源(课件讲稿)第11章 类(PPT).ppt
- 《面向对象程序设计》课程教学资源(课件讲稿)第10章 结构(PPT).ppt
- 《面向对象程序设计》课程教学资源(课件讲稿)第21章 异常处理(PPT).ppt
- 《面向对象程序设计》课程教学资源(课件讲稿)第20章 模板(PPT).ppt
- 《面向对象程序设计》课程教学资源(课件讲稿)第19章 IO流(PPT).ppt
- 《面向对象程序设计》课程教学资源(课件讲稿)第18章 运算符重载(PPT).ppt
- 《面向对象程序设计》课程教学资源(课件讲稿)第17章 多态(PPT).ppt
- 《面向对象程序设计》课程教学资源(课件讲稿)第16章 继承(PPT).ppt
- 《面向对象程序设计》课程教学资源(课件讲稿)第15章 静态成员函数与友元(PPT).ppt
- 《面向对象程序设计》课程教学资源(课件讲稿)第14章 堆与拷贝构造函数(PPT).ppt
- 《面向对象程序设计》课程教学资源(课件讲稿)第13章 面向对象程序设计(PPT).ppt
- 《面向对象程序设计》课程教学资源(课件讲稿)第12章 构造函数(PPT).ppt
- 《C语言》课程资源_智慧树使用手册_学生端使用手册.ppt
- 山东理工大学:《计算机绘图AutoCAD》课程教学资源(PPT课件)第4章 AutoCAD尺寸标注.pdf
- 山东理工大学:《计算机绘图AutoCAD》课程教学资源(PPT课件)第5章 AutoCAD绘制机械图样表达.pdf
- 山东理工大学:《计算机绘图AutoCAD》课程教学资源(PPT课件)第6章 AutoCAD绘制机械工程图.ppt
- 山东理工大学:《计算机绘图AutoCAD》课程教学资源(PPT课件)第1章 AutoCAD设计基础.ppt
- 山东理工大学:《计算机绘图AutoCAD》课程教学资源(PPT课件)第2章 AutoCAD绘图平面图形.ppt
- 山东理工大学:《计算机绘图AutoCAD》课程教学资源(PPT课件)第3章 AutoCAD绘制形体视图.pdf
- 清华大学出版社:《计算机绘图AutoCAD》课程教学课件(PPT讲稿)第6章 AutoCAD绘制机械工程图.ppt
- 清华大学出版社:《计算机绘图AutoCAD》课程教学课件(PPT讲稿)第7章 实训.ppt
- 清华大学出版社:《计算机绘图AutoCAD》课程教学课件(PPT讲稿)第1章 AutoCAD设计基础.ppt
- 清华大学出版社:《计算机绘图AutoCAD》课程教学课件(PPT讲稿)第2章 AutoCAD绘图平面图形.ppt
- 清华大学出版社:《计算机绘图AutoCAD》课程教学课件(PPT讲稿)第3章 AutoCAD绘制形体视图.ppt
- 清华大学出版社:《计算机绘图AutoCAD》课程教学课件(PPT讲稿)第4章 AutoCAD尺寸标注.ppt
- 清华大学出版社:《计算机绘图AutoCAD》课程教学课件(PPT讲稿)第5章 AutoCAD绘制机械图样.ppt
- 《IT项目管理》课程教学课件(讲稿)3-项目结束.pdf
- 《IT项目管理》课程教学资源(书籍文献)软件项目管理案例教程,韩万江,第3版,机械工业出版社.pdf
- 《IT项目管理》课程教学课件(讲稿)-项目管理概述.pdf
- 《IT项目管理》课程教学课件(讲稿)0-风险管理.pdf
- 《IT项目管理》课程教学课件(讲稿)1-合同 采购管理.pdf
- 《IT项目管理》课程教学课件(讲稿)2-集成管理.pdf
- 《IT项目管理》课程教学课件(讲稿)2.1-项目核心计划执行管理.pdf
