11C语言程序设计实验指导书.doc
程序设计基础实验指导书目 录实验一 VC+开发环境3实验二 数据处理与输入输出15实验三 选择结构19实验四 循环结构23实验五指针和引用25实验六 函数29实验七 类与对象(1)34实验七 类与对象(1)35实验七 类与对象(2)- 构造函数和析构函数39实验七 类与对象(3) 拷贝构造函数43实验七 类与对象(4) 静态成员与友元47实验八 继承50实验九 多态(1)运算符重载54实验九 多态性(2)59实验十 I/O流68实验十一 模板74实验十二 异常80实验十三 STL82课程设计50实验一 VC+开发环境一、Visual C+6.0开发环境简介Visual C+提供了一个支持可视化编程的集成开发环境:Visual Studio(又名Developer Studio)。Developer Studio是一个通用的应用程序集成开发环境,它不仅支持Visual C+,还支持Visual Basic、Visual J+、Visual InterDev等Microsoft系列开发工具。Developer Studio包含了一个文本编辑器、资源编辑器、工程编译工具、一个增量连接器、源代码浏览器、集成调试工具,以及一套联机文档。使用Developer Studio,可以完成创建、调试、修改应用程序等的各种操作。Developer Studio采用标准的多窗口Windows用户界面,并增加了一些新特性,使得开发环境更易于使用,用户很容易学会它的使用方法。一个典型的Developer Studio用户界面如图1所示。图1 Visual C+ 6.0开发环境介绍标题栏一般有“最小化”,“最大化”或“还原”以及“关闭”按钮,单击“关闭”按钮将退出开发环境。标题栏上还显示出当前被操作的文档的文件名。菜单栏包含了开发环境中几乎所有的命令,它为用户提供了文档操作、程序的编译、调试、窗口操作等一系列的功能。菜单中的一些常用命令还被排列在相应的工具栏上,以便用户更好地操作。项目工作区窗口包含用户项目的一些信息,包括类视图(ClassView)、文件视图(FileView页面)和资源视图(ResourceView)等。在项目工作区窗口中的任何标题或图标处单击鼠标右键,都会弹出相应的快捷菜单,包含当前状态下的一些常用操作。文档窗口一般位于开发环境中的右边,各种程序代码的源文件、资源文件、文档文件等都可以通过文档窗口显示出来。 输出窗口一般出现在开发环境窗口的底部,包括编译(Build)、调试(Debug)、查找文件(Find in Files)等相关信息的输出。这些输出信息以多页面标签的形式出现在输出窗口中,例如“编译”页面标签显示的是程序在编译和连接时的进度及错误信息。状态栏一般位于开发环境的最底部,它用来显示当前操作状态、注释、文本光标所在的行列号等信息。Visual C+的集成开发环境Developer Studio提供了大量的实用工具以支持可视化编程特性,它们包括:项目工作区、ClassWizard、AppWizard、WizardBar、Component Gallery等。下面我们将对它们作逐一介绍:1项目工作区项目工作区是Developer Studio的一个最重要的组成部分,程序员的大部分工作都在Developer Studio中完成。Developer Studio使用项目工作区来组织项目、元素以及项目信息在屏幕上出现的方式。在一个项目工作区中,可以处理一个工程和它所包含的文件,一个工程的子工程,多个相互独立的工程以及多个相互依赖的工程。一个项目工作区可包含由不同的开发工具包生成的工程,如Visual C+和Visual J+。在桌面上,项目工作区以窗口方式组织项目、文件和项目设置。项目工作区窗口一般位于屏幕左侧,如图1所示。项目工作区窗口底部有一组标签,用于从不同的角度(视图)察看项目中包含的工程和联机文档。每个项目视图都有一个相应的文件夹,包含了关于该项目的各种元素。展开该文件夹可以显示该视图方式下工作区的详细信息。项目工作区包含四种视图:FileView(文件视图):显示所创建的工程。展开文件夹可以察看工程中所包含的文件。FileView窗格显示了工程文件和项目工作区中所包含的文件的逻辑关系。一个工作区可以包含多个工程,其中活动工程以黑体显示。活动配置决定了编译活动工程时的编译选项。活动工程是使用Build或Rebuild All时要编译的那一个工程。可以用Build菜单上的Set Active Configuration选择不同的活动配置;也可以在Project菜单上用Set Active Project选择不同的活动工程。使用FileView可以察看文件、管理文件,包括增加、删除、移动、重命名、拷贝文件等。要增加一个文件到过程中,可以选择Project->Add to Project->Files菜单,弹出文件对话框,选择相应文件即可;要从工程中删除一个文件,可打开工程文件夹,选择相应文件,然后按DEL键。ClassView(类视图):显示项目中定义的C+类,展开文件夹显示工程中所定义的所有类,展开类可察看类的数据成员和成员函数以及全局变量、函数和类型定义。Visual C+自动从项目工作区中所包含的源程序文件中分离出类。在ClassView中,文件夹代表工程文件名。展开ClassView顶层的文件夹后,显示工程中所包含的所有的类。双击一个类的图标(或单击图标旁的+号)时,ClassView展开该类并显示其类成员。ClassView使用图标标识类、类成员和工程中的其他项,图2显示了所有的图标和含义:ResourceView(资源视图):显示项目中所包含的资源文件。展开文件夹可显示所有的资源类型。单击项目工作区底部的标签可以从一个视图切换到另一个视图。每个视图都是按层次方式组织的。可以展开文件夹和其中的项察看其内容,或折叠起来察看其组织结构。在项目视图中,如果一项不可以再展开,那么它是可编辑的。双击这一项便可以打开相应的文档编辑器进行编辑:对类和源程序文件来说,是打开文本编辑器,对于对话框来说是打开对话框编辑器等。每个视图还支持右键快捷菜单。图2 类视图中图标的含义2 AppWizard(应用程序向导)AppWizard是Visual C+提供的一个高级编程工具,它可以产生应用的C+源代码框架。通过与另一个工具ClassWizard一起配合使用,可大大节省开发应用程序的时间和精力。AppWizard是一个标准的C+源代码生成器。它通过一系列的对话框来提示用户输入所需创建的程序的信息,如它的名字和位置。用户还可以指定它是否具有一些特性,如多文档接口或工具条,对数据库、OLE的支持等。然后AppWizard生成一些文件,这些文件构成程序的框架。由AppWizard生成的程序是一个基本的Windows程序,用户可以编译并运行它实际什么也不做。它只是准备好增加那些为程序提供功能性的资源和代码。这样就节省了用户设计应用程序框架的时间和精力,用户所要做的工作只是直接往框架中添加自己的处理代码。3ClassWizard(类向导)ClassWizard是一个交互式工具,用来建立新的类,定制类,把消息映射成类成员函数,或者把控制框映射为类变量成员。在开发程序时,可用ClassWizard建立程序所需要的类,包括消息处理和消息映射例程(用于定位处理消息的代码)。使用ClassWizard,可以将成员函数或变量加入到一个类中,或修改已经存在的函数和变量。Wizard使函数或变量放在何处,如何称呼它们以及其他一些细节问题大大简化。ClassWizard所能识别的类必须在ClassView数据库文件(.CLW)中登记。使用ClassWizard可以:1)创建新类:从许多框架基类中派生出新类;2)映射消息到函数;3)新建、删除消息处理函数;4)察看已被处理的消息并跳到消息处理代码处5)定义成员变量:这些变量会被自动初始化,释放,执行对话框数据检验等;6)创建新类时,自动加入方法和属性;7)处理现有的类和类库。4 WizardBar(向导工具条)WizardBar是一个可停泊的工具条,用于快速访问一些Developer Studio最实用的功能,比如ClassWizard或ClassView的一些功能。WizardBar会自动跟踪用户程序的上下文比如,当文本编辑器中的光标从一个函数移动到另一个函数时,Wizard的显示会自动更新。WizardBar工具条包含了三个相关的下拉列表框:类(Class)、过滤器(Filter)和成员(Member),如图3所示。类列表框包含了应用程序定义的所有类。当前所选择的类决定可用的过滤器;所选的过滤器决定Member列表中显示的内容。选择Member中的一项,可以跳到相应的成员定义。WizardBar最右边是一个Action Control,单击Action Control 的向下箭头符号会弹出一个菜单,用于执行跳到函数定义、增加消息处理函数等操作。图3 WizardBarWizardBar使得处理类、成员和资源更加方便。使用WizardBar,可以:1)增加一个新类;2)建立一个新的函数或方法;3)跳到一个已存在的函数或方法。5 Componet Gallery(组件画廊)Componet Gallery是一个组件库,它保存着以后可以共享和重用的代码。这些代码包括由Visual C+自带的组件和从用户工程中增加到Gallery中去的用户自定义组件。可以使用Gallery提供的组件增强用户编写的应用程序的功能。Visual C+提供了一组应用程序的常用组件,分为两类:Developer Studio Components和Register ActiveX Controls。其中Developer Studio Components包含了我们经常使用的一些标准的Windows应用程序特性,比如:弹出菜单,剪贴板,对话条,启动画面(Splash Window),定制状态条(带时间显示),日积月累对话框等。Register ActiveX controls则用于往程序里添加ActiveX控件。组件总是加入到活动工程中。要增加组件到工程中,可以从Project菜单选取Add to Project-Components and Controls。将弹出一个对话框,选择相应的组件,回答一系列问题后,Component Gallery 将自动在你的工程文件总加入该组件的CPP、H文件以及资源,并自动修改你的源程序,插入必要的代码。无需编程,即可增加一些常用功能,如启动画面。有关使用Componet Gallery的例子。6 创建、组织文件、工程和工作区程序的组织结构项目工作区是一个包含用户的所有相关项目和配置的实体。工程定义为一个配置和一组文件,用以生成最终的程序或二进制文件。一个项目工作区可以包含多个工程,这些工程既可以是同一类型的工程,也可以是由不同类型的工程(如Visual C+和Visual J+工程)。工作区现在以.dsw为后缀名(以前为.mdp),项目文件现在以.dsp(以前为.mak)为后缀名。 Developer Studio提供了一个简单的对话框,用以创建项目工作区、工程、文件和其他文档。在创建工程时,可以指定一个新的项目工作区来包含它;或把新工程加入到当前打开的工作区中。在创建一个文件时,可以同时把它加入到工程中,也可以将现存的文件、文档加入到工程中。在新建一个工程时,可以把它加入到一个已有的项目工作区中,或同时创建一个新的项目工作区。如果加入工程到一个已有的工作区中,则可以将该工程设为已有工程的子工程。 提示:Developer Studio以工程名字来区分工程,所以要求每一个新建的工程必需有一个独一无二的名字,这样才能确保Developer Studio的工作区可以包含位于不同位置的工程。新建一个工程,可以在File菜单上,点New,选择Projects标签。从列表中选择项目类型。点Create New Workspace(新建工作区)或Add to Current Workspace(加入到当前工作区中)。要使新工程为子工程,可以选择Dependency of 检查框,并从列表中选择一个工程。在Project Name框中,输入新工程名,确保该名字必须与工作区中的别的工程名字不重名。在Location框中,指定工程存放的目录:可以直接输入路径名,也可以按旁边的Browse按钮,浏览选择一个路径。点Platform框中的相应检查框,指定工程的开发平台。输入完以上内容并按OK按钮后,根据所选的工程类型,会出现相应的Wizard(向导)。通过一系列的对话框输入,快速生成工程的框架。可以在新建工程的同时指定创建一个新的工作区,工作区文件名同该工程,后缀名为.dsw。也可以创建一个空的(不含任何工程的)工作区。要创建一个空的工作区,可以:1)在File菜单上,点New;2)在随后弹出的对话框上,点Workspace标签;3)从类型列表中选择Blank Workspace;4)在Workspace Name框中输入名字,注意名字不能通它将要包含的工程同名;5)在Location框中指定存放工作区文件的目录;6)按OK。如要增加已有文件到工程中,首先打开包含目标工程的项目工作区文件,在Project菜单上,点Add to Project,然后点Files,在Insert Files into Project对话框中,浏览并定位要加入到工程中的文件名,然后选择它们。从Insert Into中选择工程名字,然后点OK。如果工作区已经打开,而且要加入的文件也已打开,那么只要在该文件的编辑器中点鼠标右键,从快捷菜单上选择Add to Project,就可以把该文件加入到当前活动工程中。要打开工作区,可以选择File->Open Workspace,指定要打开的工作区;或选择File ->Recent Workspaces,从最近打开过的工作区列表中选择一个。要设置当前工程,选择Project Setting,可以为当前工程设置编译、链接、C/C+等各种选项。二、控制台应用程序的创建 Visual C+ 6.0启动后的用户界面 选择菜单“开始/程序/Microsoft Visual Studio 6.0/Microsoft Visual C+ 6.0”,得到Visual C+ 6.0启动后的用户界面,如图1-1所示。图1-1 Visual C+ 6.0用户界面 1创建新工程(1)单击菜单“文件/新建”,显示“新建:对话框,如图1-2所示。(2)在此对话框的列表栏中,选择“Win32 Console Application”(Win32控制台应用程序”)。在 “工程”栏中输入一个工程名,如实验一。在位置文本框中选择工程所在的路径,如图中所示H:C+实验实验一。单击“确定”按钮。图1-2 “新建”对话框(3)在强击的“Win32 Consol Application-Step 1 of 1” 对话框中选择An empty project单选项。然后单击“Finish”按钮,如图1-3所示。图1-3 “Win32 Consol Application-Step 1 of 1” 对话框(4)在“新建工程信息”对话框中单击“确认”按钮,完成工程创建过程。2创建C+源程序文件(1)编辑C+源程序 编辑C+源程序时,选择“文件”菜单项,出现一个下拉式菜单,如图1-4所示,再选择该菜单中的“新建”选项(热键为Ctrl+N)。打开“新建”窗口,在“新建”窗口。 图1-4 “新建”窗口(2) 选择“文件”,在它的下拉列表框中选择“C+ Source File”,如图1-4所示,再按击“确定”,出现编辑屏幕,如图1-5所示。图1-5 “C+”源程序编辑(3)在“C+源程序编辑”窗口下编辑C+源程序。在编辑窗口键入C+源程序。如图1-6所示,键入如下源程序:图1-6 编辑C+源程序3编译连接和运行源程序(1)选择菜单项“编译”,出现“编译”的下拉菜单,在该下拉式菜单中选择“编译 eg1-1.cpp”菜单项,这时系统开始对当前的源程序进行编译,在编译过程中,将所发现的错误显示在屏幕下方的“编译”窗口中。所显示的错误信息中指出该错误所在行号和该错误的性质。用户可根据这些错误信息进行修改。上述程序的“编译”窗口,如图1-7所示。图1-7 “编辑”窗口(2)编译无错误后,可进行连接生成可执行文件(.exe),这时选择“编译”下拉菜单中的“构件 eg1-1.exe”选项。“编译”窗口出现如图1-8所示的信息说明编译连接成功,并生成以源文件名为名字的可执行文件(eg1-1.exe)。图1-8 编译连接信息(3)执行可执行文件的方法是选择“编译”菜单项中“执行 eg1-1.exe”选项。这时,运行该可执行文件,并将结果显示在另外一个显示执行文件输出结果的窗口中,如图1-9所示。图1-9 运行C+程序结果4关闭打开工作区、打开工作区单击菜单“文件/关闭工作区”,关闭工作区。单击菜单“文件/打开工作区”,在强出的对话框中选定“H:C+实验实验一实验一.dsw”,单击“打开”按钮,则可打开工作区,对已建立的工程文件进行修改。三、程序调试调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。1设置为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个从AppWizard创建的工程中包含的Debug Configuration自动包含调试信息,但是是不是Debug版本并不是程序包含调试信息的决定因素,程序设计者可以在任意的Configuration中增加调试信息,包括Release版本。为了增加调试信息,可以按照下述步骤进行:· 打开Project settings对话框(可以通过快捷键ALT+F7打开,也可以通过IDE菜单Project/Settings打开) 选择C/C+页,Category中选择general ,则出现一个Debug Info下拉列表框,可供选择的调试信息 方式包括: 命令行Project settings说明无None没有调试信息/ZdLine Numbers Only目标文件或者可执行文件中只包含全局和导出符号以及代码行信息,不包含符号调试信息/Z7C 7.0- Compatible目标文件或者可执行文件中包含行号和所有符号调试信息,包括变量名及类型,函数及原型等/ZiProgram Database创建一个程序库(PDB),包括类型信息和符号调试信息。/ZIProgram Database for Edit and Continue除了前面/Zi的功能外,这个选项允许对代码进行调试过程中的修改和继续执行。这个选项同时使#pragma设置的优化功能无效· 选择Link页,选中复选框"Generate Debug Info",这个选项将使连接器把调试信息写进可执行文件和DLL · 如果C/C+页中设置了Program Database以上的选项,则Link incrementally可以选择。选中这个选项,将使程序可以在上一次编译的基础上被编译(即增量编译),而不必每次都从头开始编译。 2断点断点是调试器设置的一个代码位置。当程序运行到断点时,程序中断执行,回到调试器。断点是 最常用的技巧。调试时,只有设置了断点并使程序回到调试器,才能对程序进行在线调试。设置断点:可以通过下述方法设置一个断点。首先把光标移动到需要设置断点的代码行上,然后· 按F9快捷键 · 弹出Breakpoints对话框,方法是按快捷键CTRL+B或ALT+F9,或者通过菜单Edit/Breakpoints打开。打开后点击Break at编辑框的右侧的箭头,选择 合适的位置信息。一般情况下,直接选择line xxx就足够了,如果想设置不是当前位置的断点,可以选择Advanced,然后填写函数、行号和可执行文件信息。 去掉断点:把光标移动到给定断点所在的行,再次按F9就可以取消断点。同前面所述,打开Breakpoints对话框后,也可以按照界面提示去掉断点。条件断点:可以为断点设置一个条件,这样的断点称为条件断点。对于新加的断点,可以单击Conditions按钮,为断点设置一个表达式。当这个表达式发生改变时,程序就 被中断。底下设置包括“观察数组或者结构的元素个数”,似乎可以设置一个指针所指向的内存区的大小,但是我设置一个比较的值但是改动 范围之外的内存区似乎也导致断点起效。最后一个设置可以让程序先执行多少次然后才到达断点。数据断点:数据断点只能在Breakpoints对话框中设置。选择“Data”页,就显示了设置数据断点的对话框。在编辑框中输入一个表达式,当这个 表达式的值发生变化时,数据断点就到达。一般情况下,这个表达式应该由运算符和全局变量构成,例如:在编辑框中输入 g_bFlag这个全局变量的名字,那么当程序中有g_bFlag= !g_bFlag时,程序就将停在这个语句处。消息断点:VC也支持对Windows消息进行截获。他有两种方式进行截获:窗口消息处理函数和特定消息中断。在Breakpoints对话框中选择Messages页,就可以设置消息断点。如果在上面那个对话框中写入消息处理函数的名字,那么 每次消息被这个函数处理,断点就到达(我觉得如果采用普通断点在这个函数中截获,效果应该一样)。如果在底下的下拉 列表框选择一个消息,则每次这种消息到达,程序就中断。3值1) WatchVC支持查看变量、表达式和内存的值。所有这些观察都必须是在断点中断的情况下进行。观看变量的值最简单,当断点到达时,把光标移动到这个变量上,停留一会就可以看到变量的值。VC提供一种被成为Watch的机制来观看变量和表达式的值。在断点状态下,在变量上单击右键,选择Quick Watch, 就弹出一个对话框,显示这个变量的值。单击Debug工具条上的Watch按钮,就出现一个Watch视图(Watch1,Watch2,Watch3,Watch4),在该视图中输入变量或者表达式,就可以观察 变量或者表达式的值。注意:这个表达式不能有副作用,例如+运算符绝对禁止用于这个表达式中,因为这个运算符将修改变量的值,导致 软件的逻辑被破坏。2) Memory由于指针指向的数组,Watch只能显示第一个元素的值。为了显示数组的后续内容,或者要显示一片内存的内容,可以使用memory功能。在 Debug工具条上点memory按钮,就弹出一个对话框,在其中输入地址,就可以显示该地址指向的内存的内容。3) VariblesDebug工具条上的Varibles按钮弹出一个框,显示所有当前执行上下文中可见的变量的值。特别是当前指令涉及的变量,以红色显示。4) 寄存器Debug工具条上的Reigsters按钮弹出一个框,显示当前的所有寄存器的值。5进程控制VC允许被中断的程序继续运行、单步运行和运行到指定光标处,分别对应快捷键F5、F10/F11和CTRL+F10。各个快捷键功能如下: 快捷键说明F5继续运行F10单步,如果涉及到子函数,不进入子函数内部F11单步,如果涉及到子函数,进入子函数内部CTRL+F10运行到当前光标处。6Call Stack调用堆栈反映了当前断点处函数是被那些函数按照什么顺序调用的。单击Debug工具条上的Call stack就显示Call Stack对话框。在CallStack对话框中显示了一个调用系列,最上面的是当前函数,往下依次是调用函数的上级函数。单击这些函数名可以跳到对应的函数中去。7其他调试手段系统提供一系列特殊的函数或者宏来处理Debug版本相关的信息,如下:宏名/函数名说明TRACE使用方法和printf完全一致,他在output框中输出调试信息ASSERT它接收一个表达式,如果这个表达式为TRUE,则无动作,否则中断当前程序执行。对于系统中出现这个宏 导致的中断,应该认为你的函数调用未能满足系统的调用此函数的前提条件。例如,对于一个还没有创建的窗口调用SetWindowText等。VERIFY和ASSERT功能类似,所不同的是,在Release版本中,ASSERT不计算输入的表达式的值,而VERIFY计算表达式的值。8注意一个好的程序员不应该把所有的判断交给编译器和调试器,应该在程序中自己加以程序保护和错误定位,具体措施包括:· 对于所有有返回值的函数,都应该检查返回值,除非你确信这个函数调用绝对不会出错,或者不关心它是否出错。 · 一些函数返回错误,需要用其他函数获得错误的具体信息。例如accept返回INVALID_SOCKET表示accept失败,为了查明 具体的失败原因,应该立刻用WSAGetLastError获得错误码,并针对性的解决问题。 · 有些函数通过异常机制抛出错误,应该用TRY-CATCH语句来检查错误 · 程序员对于能处理的错误,应该自己在底层处理,对于不能处理的,应该报告给用户让他们决定怎么处理。如果程序出了异常, 却不对返回值和其他机制返回的错误信息进行判断,只能是加大了找错误的难度。 另外:VC中要编制程序不应该一开始就写cpp/h文件,而应该首先创建一个合适的工程。因为只有这样,VC才能选择合适的编译、连接 选项。对于加入到工程中的cpp文件,应该检查是否在第一行显式的包含stdafx.h头文件,这是Microsoft Visual Studio为了加快编译 速度而设置的预编译头文件。在这个#include "stdafx.h"行前面的所有代码将被忽略,所以其他头文件应该在这一行后面被包含。对于.c文件,由于不能包含stdafx.h,因此可以通过Project settings把它的预编译头设置为“不使用”,方法是:· 弹出Project settings对话框 · 选择C/C+ · Category选择Precompilation Header · 选择不使用预编译头。 实验二 数据处理与输入输出【实验目的】1掌握C语言中的简单数据类型及输入输出方法。2学会利用学习的数据类型与输入输出方法,编制简单的C程序。3弄清基本数据类型的字节宽度和范围表示。4.掌握程序的表达式表示方法。5掌握基本语句的使用方法。 【实验内容】1编写一个程序,输出基本数据类型char, short, int, long, float, double的数据类型的长度。2设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用cin输入数据,用cout输出数据,输出时要有文字说明,取小数点后2位小数,请编程序。3编写程序,从键盘输入一个三位正整数,输出其逆转数。例如:输入123,输出为321。4.输入并运行下列程序,分析和写出各程序的运行结果。(1)#include<iostream.h>void main() int x=6, y ;cout<<" x= "<<x<<endl ; y = +x ; cout<<"x= "<<x<<" y ="<<y<<endl ;x=6; y=x+; cout<<"x= "<<x<<" y ="<<y<<endl ; x=6;y = x-; cout<<"x="<<x<< " y = "<<y<<endl ; x=6;y = -x; cout<<"x="<<x<< " y = "<<y<<endl ;( 2 ) #include<iostream.h>void main() int a=20, b=6;a+=a; cout<<a<<endl;a=20; a-=a; cout<<a<<endl;a=20; a*=a; cout<<a<<endl;a=20; a/=b; cout<<a<<endl;a=20; a%=b; cout<<a<<endl;a=20; a=a-b; cout<<a<<endl;a=10; b=4; a+=a*=a-=a/b; cout<<a<<endl;(3) #include<iostream.h>void main() int a=3,b=4,c=5,x,y; x=(a+b>c&&b=c); cout<<x<<endl; x=(a|b+c&&b-c); cout<<x<<endl; x=!(a>b&&!c|1); cout<<x<<endl; x=(!(a+b)+c-1&&b+c/2); cout<<x<<endl; !(x=a)&&(y=b)&&0; cout<<"x= "<<x<<" y="<<y<<endl; (4) #include<iostream.h>void main() int a=3,b=4,c=5,max; max =(a>b)?a:b; cout<<max<<endl; max=b>c?a:a<c?a:b; cout<<"max= "<<max<<endl; 【要点说明】1求int型数据类型长度的表达式为:sizeof(int)。sizeof是操作符,无需头文件,使用像函数。弄清C+中每个基本数据类型的长度,从中能判断出编译系统是16位指令系统还是32位指令系统。2在C+中把数据的I/O称为数据流,并提供了强大的“流”处理功能,以控制数据从一个位置流向另外一个位置。相对于内存,当数据从内存流向屏幕、打印机或硬盘时称为输出;当数据从键盘、硬盘流向内存时称为输入。C+用两个对象cin和cout实现标准的输入输出。cin:它是istream类的对象,用来处理标准输入,即键盘输入。cout:它是ostream类的对象,用来处理标准输出,即屏幕输出。在C+中用istream类和ostream类的派生类iostream控制输入输出,并提供了输入和输出操作符。<<称为插入操作符,其作用是向cout流中插入字符。>>称为抽取操作符,其作用是从cin流中提取字符。3题目3输入的三位数为整数,变量类型按整型进行处理。可采用求余数的方法计算各位上的数,然后逆序输出。4.赋值表达式的作用就是把右操作数的值复制一份给左操作数,注意赋值运算总是从右向左赋值的,左操作数必须是一个变量,不能是常量或者表达式。5自加和自减运算符有两种使用方式:前缀和后缀表示法。 前缀表示法: +x; 或 -x; 后缀表示法: x+; 或 x-;前缀表示法,是“先增值后引用”;而使用后缀表示法,则是“先引用后增值”。这两种表示法导致的结果会截然不同。6关系表达式指出两个值之间的大小关系。关系表达式计算的结果只能是0或1,1代表true,0代表false。7C+语言中有3个逻辑运算符,它们分别是:“ 与 ”、“ 或 ”、“ 非 ”。与关系运算符一样,逻辑运算符计算的结果也是0或1,1代表true,0代表false。 8条件运算符只有一个,就是: expr1 ? expr2 : expr3条件expr1的计算结果不是true 就是false,如果它是true 则返回的结果是表达式expr2;否则返回的结果是表达式expr3。【参考答案】 实验三 选择结构【实验目的】1、掌握简单if语句及嵌套if语句的应用;2、掌握switch语句及break的应用;。【实验内容】1解一元二次方程当a=0 且b=0时,方程无根;当a=0 且b0时,方程有一个根;当a0且b0时,根据确定方程的根;,有两个不同实根;,有两个相同实根;,有两个不同复根。输入三个实数a、b、c,求方程的两个根,并显示在屏幕上。2.编写一个程序,输入某雇员的每周工作时间(以小时计)和每小时的工资数,计算并输出他的工资。若雇员每周工作小时超过40小时,则超过部分按原工资的1.5倍计算。若雇员每周工作小时超过60小时,则超过60的部分按原工资的3倍计算。要求:(1)要求有输入提示和输出提示,如输入雇员的工作时间和每小时的工资值时,可以提示:“Please input employees work time and wage_per_hour:”输出时,提示:“The employees wage :”。(2)写出雇员在各种周工作时间情况下的输入数据和输出数据。3.编写一个程序,只要输入生日的年、月、日,就能计算出生日是星期几。4利用肥胖程度计算公式BMI法自我诊断肥胖程度。BMI法如下:体重指数 = 体重(公斤) 除 身高(米)的平方 。 即 kg/m2 。 正常体重 :体重指数 = 18 25超重 :体重指数 = 25 30轻度肥胖 :体重指数 > 30中度肥胖 :体重指数 > 35重度肥胖 :体重指数 > 40 编写程序,输入体重和身高,输出肥胖程度。【要点说明】1 已知公元1年1月1日是星期一,只需求出生日离那时共几天,问题就解决了。天数的计算,先算公元1年到生日的上一年年底共几天,再算本年到生日的上月底共几天,最后加上当月的天数。其中闰年满足:(year%4=0)&&(year%100!=0) | (year%400=0)2 实验2 程序先计算出体重指数,利用switch语句实现肥胖程度测定。3 学习程序书写风格,数据定义和语句执行用空行隔开,循环体、if语句执行体和其他嵌套语句往里缩进若干空格,养成锯齿形书写源程序的习惯。4 学习使用注释语句,在程序的开头说明其功能和用法,在程序的中间,解释数据结构、变量、算法等不易让人读懂之处。【参考答案】实验四 循环结构 【实验目的】1理解并掌握程序的循环结构(for语句、while语句、do-while语句)程序设计。掌握循