《C++面向对象程序设计教材课件汇总完整版ppt全套课件最全教学教程整本书电子教案全书教案课件合集.ppt》由会员分享,可在线阅读,更多相关《C++面向对象程序设计教材课件汇总完整版ppt全套课件最全教学教程整本书电子教案全书教案课件合集.ppt(412页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C+面向对象程序设计(第二版)C+面向对象程序设计(第二版)第一章 面向对象程序设计概述 04 三月 2023C+面向对象程序设计第一章 面向对象程序设计概述t1.1 面向对象的基本概念t1.2 C+面向对象程序设计t1.3 C+程序的基本组成t1.4 Visual C+6.0开发环境04 三月 2023C+面向对象程序设计1.1 面向对象的基本概念t面向对象程序设计的本质是把数据及对数据的操作方法放在一起,作为一个相互依存、不可分离的整体对象。t对同类型对象抽象出其共性,形成类。04 三月 2023C+面向对象程序设计1.1 面向对象的基本概念t面向对象程序设计方法具有4个基本特征:抽象、封
2、装、继承和多态性。l抽象(abstract)就是忽略事物的非本质特征,只注意那些与当前目标有关的本质特征,从而找出事物的共性,把具有共同性质的事物划分为一类,得出一个抽象的概念。面向对象方法中的“类”将具有相同属性和行为的一组对象提供了抽象的描述,一个属于某类的对象称为该类的一个实例。04 三月 2023C+面向对象程序设计1.1 面向对象的基本概念l封装(encapsulation)就是把每个对象的数据(属性)和操作(行为)包装在一个类中,并尽可能隐藏对象的内部细节。一般限制直接访问对象的属性,而应通过操作接口访问,这样使程序中模块之间关系更简单、数据更安全。对程序的修改也仅限于类的内部,使
3、得由于修改程序所带来的影响局部化。04 三月 2023C+面向对象程序设计1.1 面向对象的基本概念l多态性(polymorphism)是指允许不同类的对象对同一消息作出的响应不相同。一般类中定义的属性或行为,被特殊类继承后,可以具有不同的数据类型或者是表现出不同的行为。这使得同一个属性或行为在一般类及其各个特殊类中具有不同的语义 04 三月 2023C+面向对象程序设计1.1 面向对象的基本概念t通过使用面向对象程序设计的抽象、封装、继承和多态性等机制,程序更易于维护、更新和升级。利用代码可重用性,程序员可以在程序中大量使用成熟的类库,从而缩短程序的开发时间,提高程序员的工作效率和程序的可靠
4、性。04 三月 2023C+面向对象程序设计1.2 C+面向对象程序设计t本书介绍的主要就是使用最为广泛的C+语言和使用C+语言进行面向对象程序设计的方法。在学习编程之前,我们首先来简单了解以下C+程序的开发过程。04 三月 2023C+面向对象程序设计1.2 C+面向对象程序设计t程序的开发通常要经过编辑、编译、连接、运行调试这几个步骤。编辑是将源程序输入到计算机中,生成后缀为.cpp的磁盘文件。编译(compile)是将程序的源代码转换成机器语言代码。程序员编制的源程序被编译后,会生成一个目标文件,这个文件通常以.obj作为文件扩展名,该目标文件为源程序的目标代码。04 三月 2023C+
5、面向对象程序设计1.2 C+面向对象程序设计t但是编译后的程序还不能由计算机执行,因为目标代码只是一个个的程序块,需要相互衔接成为一个适应一定操作系统环境的程序整体。为了把它转换成可执行程序,必须进行连接(link)。C+程序通常是通过同时连接一个或多个目标文件以及一个或几个库而创建的。04 三月 2023C+面向对象程序设计1.2 C+面向对象程序设计t库(.lib)是一组由机器指令构成的程序代码,是可连接文件。库有标准库和用户生成的库。标准库是由C+提供的,用户生成的库是由软件开发商或程序员提供的。文件与库连接的结果,即生成一个后缀为.exe的计算机可执行程序。04 三月 2023C+面向
6、对象程序设计1.3 C+程序的基本组成t我们就从最简单的例子来分析C+程序的构成:#include using namespace std;void main()cout Hello,World!n;cout Im a student.n;04 三月 2023C+面向对象程序设计1.3 C+程序的基本组成t程序运行结果为:Hello,World!Im a student.04 三月 2023C+面向对象程序设计1.3 C+程序的基本组成t一个C+程序是由三部分组成的,分别是:注释部分、编译预处理和程序主体。l程序的注释部分是程序员为读者作的说明,是提高程序可读性的一种方法。l每个以符号“#”开
7、头的行,称为编译预处理行。如本例中“#include”称为编译指令。04 三月 2023C+面向对象程序设计1.3 C+程序的基本组成l在程序的主体部分中,main是主函数名,函数是C+程序中最小的功能单位,每一个C+程序都必须有一个main()函数,并且main()表明了程序执行的开始点。04 三月 2023C+面向对象程序设计1.3 C+程序的基本组成t每一种编程语言都使用一组字符来构造成编程语句。用C+语言编写程序时,除了字符型数据以外,其它所有成分都只能由字符集中的字符构成。C+语言的字符集由下列字符构成:04 三月 2023C+面向对象程序设计1.3 C+程序的基本组成26个大写英文
8、字母:ABCDEFGHIJKLMNOPQRSTUVWXYZ26个小写英文字母:abcdefghijklmnopqrstuvwxyz10个数字字符:0 1 2 3 4 5 6 7 8 9特殊字符:+-*/=,._ :;?!#%&()空格04 三月 2023C+面向对象程序设计1.3 C+程序的基本组成t词法记号是最小的词法单元,接下来介绍C+的关键字、标识符、文字、运算符、分隔符、空白符。l关键字C+中,关键字又称保留字,它是预先定义好的标识符,这些标识符对C+编译程序有着特殊的含义。04 三月 2023C+面向对象程序设计1.3 C+程序的基本组成l标识符标识符是程序员声明的单词,它命名程序正
9、文中的一些实体,如函数名、变量名、类名、对象名等。l文字文字是在程序中直接使用符号表示的数据,包括数字、字符、字符串和布尔文字。l操作符(运算符)操作符是用于实现各种运算的符号。04 三月 2023C+面向对象程序设计1.3 C+程序的基本组成l分隔符 分隔符用于分隔各个词法记号或程序正文,这些分隔符不表示任何实际的操作,仅用于构造程序。l空白 在程序编译时的词法分析阶段将程序正文分解为词法记号和空白。空白是空格、制表符、换行符和注释的总称。04 三月 2023C+面向对象程序设计1.4 Visual C+6.0开发环境tVisual C+6.0是微软公司推出的一个功能强大的可视化软件开发工具
10、。Visual C+6.0不仅是一个C+编译器,它还有一个非常好的集成开发环境Developer Studio,包括编辑器编译器、调试器以及程序向导等组件,用它可以在编写C+程序时对程序的结构进行可视化的管理。04 三月 2023C+面向对象程序设计1.4 Visual C+6.0开发环境t本节简单介绍Visual C+6.0集成开发环境的特点、界面风格和简单工具的使用。t安装完Visual C+6.0后,从Windows的“开始|程序”菜单中选择Microsoft Visual Studio 6.0菜单中的Microsoft Visual C+6.0菜单项,就启动了Visual C+集成开发
11、环境,出现集成开发环境的主窗口Developer Studio。04 三月 2023C+面向对象程序设计1.4 Visual C+6.0开发环境t下面通过实例说明如何利用Visual C+6.0创建一个C+程序。l启动Visual C+6.0,打开File菜单,执行New菜单命令,出现New对话框,如图1-1所示。在Project页面窗口中选择Win32 Console Application选项,创建一个Win32控制台应用程序。在Project name编辑框中输入项目名称Hello,在Location编辑框中输入保存项目的路径。04 三月 2023C+面向对象程序设计1.4 Visual
12、 C+6.0开发环境图1-1 创建一个Win32控制台应用程序04 三月 2023C+面向对象程序设计1.4 Visual C+6.0开发环境l在Win32 Console Application-Step1 of 1对话框中设置控制台应用程序的类型,如图1-2所示。这里我们要创建一个空项目程序,因此选择第一项An empty project,单击Finish按钮,出现New Project Information对话框,单击OK按钮,将生成一个空项目。04 三月 2023C+面向对象程序设计1.4 Visual C+6.0开发环境图1-2 设置控制台应用程序的类型 04 三月 2023C+面
13、向对象程序设计1.4 Visual C+6.0开发环境l向项目Hello中添加源程序文件。打开Project菜单,选择Add to Project|New,出现如图1-3所示的添加项目文件对话框。在的Files页面窗口中选择C+Source File,在右边的File编辑框中输入C+源程序文件名称Hello,在Location编辑框中输入保存该文件的路径。单击OK按钮,在主窗口Developer Studio左边的项目工作区窗口的Souce Files文件夹目录下出现Hello.cpp文件,双击该文件,在右边的编辑窗口中输入例1-1的源程序代码。04 三月 2023C+面向对象程序设计1.4
14、Visual C+6.0开发环境图1-3 添加项目文件C+面向对象程序设计1.4 Visual C+6.0开发环境l编译运行源程序Hello.cpp。打开Build菜单,选择Build Hello.exe命令项或按快捷键F7,系统开始对项目Hello进行编译、连接,同时在输出窗口中显示出编译的内容,当出现Hello.exe 0 error(s),0 warning(s)字样时,表示Hello.exe可执行文件已经正确无误地生成了,如图1-4所示。在Build菜单中选取Execute Hello.exe命令项或按快捷键Ctrl+F5,就可以运行刚刚生成的Hello.exe。04 三月 2023C
15、+面向对象程序设计1.4 Visual C+6.0开发环境图1-4 Hello项目Developer Studio窗口C+面向对象程序设计1.4 Visual C+6.0开发环境l用户通过选择Help菜单下的Contents命令或Search工具栏按钮就可以进入MSDN帮助系统,也可单击F1键快速获取相关内容的帮助。图1-5是MSDN Library是一般界面。04 三月 2023C+面向对象程序设计1.4 Visual C+6.0开发环境图 1-5 MSDN帮助系统C+面向对象程序设计(第二版)C+面向对象程序设计(第二版)第二章 C+语言基础04 三月 2023C+面向对象程序设计第二章
16、C+语言基础t2.1 数据类型和基本输入输出t2.2 运算符和表达式t2.3 基本控制结构t2.4 函数t2.5 构造类型t2.6 指针t项目设计1 控制台程序的人机界面设计04 三月 2023C+面向对象程序设计2.1 数据类型和基本输入输出t2.1.1 基本数据类型t2.1.2 常量t2.1.3 变量t2.1.4 基本输入、输出04 三月 2023C+面向对象程序设计2.1.1 基本数据类型t基本数据类型是C+系统的内部数据类型,包括bool(布尔型)、int(整型)、char(字符型)、float(单精度浮点型)、double(双精度浮点型)以及基本数据类型中short(短型)和long
17、(长型)、signed(有符号)和unsigned(无符号)之分。t+的数据类型如下图所示:04 三月 2023C+面向对象程序设计2.1.1 基本数据类型 C+面向对象程序设计2.1.1 基本数据类型t使用基本数据类型要注意两点:l无符号(unsigned)和有符号(signed)的区别在于数值最高位的含义。lint型在16位系统中和在32位系统中,所占用字节数是不一样的。04 三月 2023C+面向对象程序设计2.1.2 常量t所谓常量是指在程序运行的整个过程中其值始终不可改变的量,也就是直接使用符号(文字)表示的值。l例如10,-6,2.3,-5.7,A,b都是常量。t整型常量l整型常量
18、就是整型常数。整型常量可以用以下三种形式表示:t十进制整数:十进制整数没有前缀。例如:237、-568、65535、162704 三月 2023C+面向对象程序设计2.1.2 常量t八进制整数:八进制整数要以数字0开头,即以0作为八进制数的前缀。例如:015(十进制为13)、0101(十进制为65)、0177777(十进制为65535)t十六进制整常数:十六进制整数要以数字0 x或0X开头,即以0 x作为十六进制数的前缀。例如:0X2A(十进制为42)、0XA0(十进制为160)、0XFFFF(十进制为65535)t实型常量l实型常量也称为实数或者浮点数。实数只采用十进制,它有二种形式:小数形
19、式和指数形式。04 三月 2023C+面向对象程序设计2.1.2 常量t十进制数的形式:由数码09和小数点组成。例如:0.0、25.0、5.789、0.13、300.、-267.8230等均为合法的实数。注意,实型常量中必须含有小数点。t指数形式:由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。例如:2.1E5(等于2.1105)、3.7E-2(等于3.710-2)、-2.8E-2(等于-2.810-2)l实型常量默认都按双精度double型处理。但可以添加后缀“f”或“F”即表示该数为单精度浮点数。04 三月 2023C+面向对象程序设计2.1.2 常量t字符常量
20、l字符常量是用单引号括起来的一个字符。例如:a、b、=、+、?。有以下特点:t字符常量只能用单引号括起来,不能用双引号或其它括号。t字符常量只能是单个字符,不能是字符串。t字符可以是字符集中任意字符。但数字被定义为字符型其含义就发生了变化。如5 和5 是不同的。04 三月 2023C+面向对象程序设计2.1.2 常量l转义字符是一种特殊的字符常量。转义字符以反斜线“”开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。例如,“n”就是一个转义字符,其意义是“回车换行”。转义字符主要用来表示那些用一般字符不便于表示的控制代码。广义地讲,字符集中的任何一个字符
21、均可用转义字符来表示。t字符串常量04 三月 2023C+面向对象程序设计2.1.2 常量l字符串常量是由一对双引号括起的字符序列。例如:“CHINA”,“C program”,“$12.5”等都是合法的字符串常量。字符串常量和字符常量是不同的量。它们之间主要有以下区别t字符常量由单引号括起来,字符串常量由双引号括起来 t字符常量只能是单个字符,字符串常量则可以含一个或多个字符 t字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字节数加1。增加的一个字节中存放字符“0”(ASCII码为0)。这是字符串结束的标志。04 三月 2023C+面向对象程序设计2.1.2 常量t布尔常
22、量l布尔型常量只有两个:true(真)和false(假)。t符号常量l除了前面讲过的直接用文字表示常量外,也可以为常量命名,这种代替常量本身的标识符称为符号常量。C+中用const定义符号常量。符号常量在使用之前一定要首先声明,常量声明语句的形式为:tconst 数据类型说明符 常量名=常量值;04 三月 2023C+面向对象程序设计2.1.2 常量l符号常量在声明时一定要赋初值,而在程序中间不能改变其值。04 三月 2023C+面向对象程序设计2.1.3 变量t在程序的执行过程中其值可以变化的量称为变量,变量是需要用名字来标识的。t变量的定义l就像常量具有各种类型一样,变量也具有相应的类型。
23、变量在使用之前需要首先声明其类型和名称。变量名应是合法的标识符。变量声明语句的形式如下:t ;04 三月 2023C+面向对象程序设计2.1.3 变量t变量的初始化l在声明一个变量的同时,也可以给它赋以初值,而这实质上就是给对应的内存单元赋值,这一过程称为初始化。t例如:int a=3,b=5;/指定a,b为整型变量,a的初值为3,b的初/值为5tC+中变量的初始化还有另一种形式,例如:int a(3),b(5);l需要注意的是,一个未初始化的变量不是没有数值,而是取决于变量所在系统中的存储形式,它可能是系统的默认值或无效值。04 三月 2023C+面向对象程序设计2.1.4 基本输入、输出t
24、C+中使用标准输入流cin和标准输出流cout来实现数据的输入与输出。l输出流(cout)t通过cout可以输出一个整数、实数、字符及字符串,cout中的插入符“”可以连续写多个,每个后面可以跟一个表达式,该表达式通常是获得输入值的变量或对象。04 三月 2023C+面向对象程序设计2.2 运算符和表达式t2.2.1 算术运算符和算术表达式t2.2.2 赋值运算符和赋值表达式t2.2.3 逗号运算符和逗号表达式t2.2.4 关系运算符和关系表达式t2.2.5 逻辑运算符和逻辑表达式t2.2.6、与sizeof运算符t2.2.7 位运算符t2.2.8 三目运算符04 三月 2023C+面向对象程
25、序设计2.2 运算符和表达式t2.2.9 运算符的优先顺序 t2.2.10 运算式中的类型转换04 三月 2023C+面向对象程序设计2.2.1 算术运算符和算术表达式tC+中由算术运算符、操作数和括号构成的表达式称为算术表达式。lC+中基本算术运算符有:+(加法),(减法或负号),*(乘法),/(除法),%(求余)。t这些算术运算符和数学运算的概念及运算方法是一致的,但有几点需要说明:l“”减法运算,即是双目运算符又是单目运算符,作单目运算符时,是求负运算,例如:-5,-x等。04 三月 2023C+面向对象程序设计2.2.1 算术运算符和算术表达式l“/”除法运算,当参与相除运算的两个操作
26、数均为整型时,其结果也为整型,取商的整数部分,舍去小数,因此表达式1/2的结果为0。如果两个操作数中有一个是实型,则结果为双精度实型。l“%”求余运算,要求参与运算的操作数均为整型。例如:表达式a%b,其值等于两数相除后的余数,即a被b除的余数,符号与a相同。l优先级和结合性。在一个包含多种算术运算的混合运算中,先乘除、后加减的运算规则是由运算符的优先级来保证的;在算术运算符中,除单目运算符外,其余运算符的结合性都是自左向右。04 三月 2023C+面向对象程序设计2.2.2 赋值运算符和赋值表达式tC+中赋值运算符“=”是一个双目运算符,运算的结合性为自右向左。l带有赋值运算符的表达式被称为
27、赋值表达式,其作用就是将赋值符右边表达式的值赋给左边的操作数。l例如,x=a+b就是一个赋值表达式。t在赋值符“=”之前加上其它双目运算符可构成复合赋值符。lC+提供了10种复合赋值运算符:+=,=,*=,/=,%=,=,&=,=,|=。l例如:a+=5 等价于a=a+504 三月 2023C+面向对象程序设计2.2.3 逗号运算符和逗号表达式t在语言中逗号“,”也是一种运算符,称为逗号运算符。l逗号运算符是优先级最低的运算符。l其形式为:表达式1,表达式2,表达式nl在计算时,C+将自左向右逐个计算每个表达式,最终整个表达式的结果是最后计算的那个表达式的类型和值。l例如:j=(i=12,i+
28、8)/表达式值为20 04 三月 2023C+面向对象程序设计2.2.4 关系运算符和关系表达式t比较两个量的运算符称为关系运算符。l关系运算符将两个数据进行比较,判定两个数据是否符合给定的关系。t例如,“x y”中的“”表示一个大于关系运算。tC+提供了6种关系运算符:(小于),(大于),=(大于等于),=(等于),!=(不等于)。04 三月 2023C+面向对象程序设计2.2.4 关系运算符和关系表达式t有几点需要注意l“等于”关系运算符是两个等号“=”,而不是一个等号“=”(赋值运算符)。l在6个关系运算符中,前4个优先级相同,后2个也相同,且前4个高于后2个。l关系运算符的优先级,低于
29、算术运算符,但高于赋值运算符。t用关系运算符将两个表达式连接起来,进行关系运算的式子就是关系表达式。04 三月 2023C+面向对象程序设计2.2.4 关系运算符和关系表达式l关系表达式的值为逻辑值即“真”或“假”。在C+编译系统中,往往将“真”表示为“true”或1,将“假”表示为“false”或0。而任何不为0的数被认为是“真”,0被认为是“假”。l例如设x1=1,x2=2,x3=3,则:(x1x2)!=x3 /表达式为1。04 三月 2023C+面向对象程序设计2.2.5 逻辑运算符和逻辑表达式t逻辑运算符用于将多个关系表达式或逻辑量(“真”或“假”)组成一个逻辑表达式。lC+提供了下列
30、三种逻辑运算符:&逻辑与|逻辑或 !逻辑非l例如,下面的表达式都是逻辑表达式:(x=1&(x2),(x5),!(x=0)04 三月 2023C+面向对象程序设计2.2.5 逻辑运算符和逻辑表达式t逻辑运算符的运算规则如下:l&:双目运算符,当且仅当两个操作数的值都为“真”时,运算结果为“真”,否则为“假”。等价于“同时”的含义。l|:双目运算符,当且仅当两个操作数的值都为“假”时,运算结果为“假”,否则为“真”。等价于“或者”的含义。l!:单目运算符,当操作数的值为“真”时,运算结果为“假”;当操作数的值为“假”时,运算结果为“真”。等价于“否定”的含义。l例如,设x=5,则(x=0)&(x2
31、5)的值为“真”,(x5)的值为“假”。04 三月 2023C+面向对象程序设计2.2.5 逻辑运算符和逻辑表达式t逻辑运算符的优先级如下:l逻辑非的优先级最高,逻辑与次之,逻辑或最低,即:!(非)&(与)|(或)l与其它种类运算符的优先关系:!算术运算 关系运算&|赋值运算 04 三月 2023C+面向对象程序设计2.2.6、与sizeof运算符t自增、自减运算符l单目运算符自增(+)和自减()的作用是使整型变量的值增1或减1。这两个运算符都有前置和后置两种使用形式。t例如:+i 与i+的作用相当于i=i+1;i与i的作用相当于 i=i1。l这里需要注意的是:t自增(+)和自减()运算符只能
32、用于变量,而不能用于常量或表达式,如3+或(a+b)+都是不合法的。04 三月 2023C+面向对象程序设计2.2.6、与sizeof运算符t+和 的结合性是“自右至左”。若自增(+)和自减()仅用于某个变量的增1和减1,则前置和后置两种使用形式是等价的,但如果将自增(+)和自减()和其他运算符组合在一起,则前置和后置两种使用形式在求值次序上就会产生不同:l+i,i (在使用i参与其他运算之前,先使i的值加(减)1)li+,i (在使用i参与其他运算之后,再使i的值加(减)1)04 三月 2023C+面向对象程序设计2.2.6、与sizeof运算符tsizeof运算符lsizeof运算符用于计
33、算操作数在内存中所占的字节数。l它使用的语法形式为:tsizeof()tsizeof()l运算结果返回值为“数据类型”所指定的类型或“表达式”的结果类型所占的字节数。l例如:lsizeof(int)/计算整型int所占内参的字节数lsizeof(hello)/计算字符串常量的实际长度 04 三月 2023C+面向对象程序设计2.2.7 位运算符t位运算符是对操作数按其在计算机内表示的二进制数逐位地进行逻辑运算或移位运算。tC+语言提供了6种位运算:l位逻辑运算符t“按位与”运算符&l运算规则:参加运算的两个操作数,如果两个数相应位的值都是1,则该位的结果值为1,否则为0。l例如:如果要保留整数
34、a的低字节,屏蔽掉其高字节,只需要将a和b进行按位与运算即可,其中b的高字节每位置为0,低字节每位置为1,即 00101010 01010010&00000000 11111111=00000000 0101001004 三月 2023C+面向对象程序设计2.2.7 位运算符t“按位或”运算符|l运算规则:参加运算的两个操作数,如果两个数相应位的值都是0,则该位的结果值为0,否则为1.l例如:如果把a的第10位置为1,而且不要破坏其它位,可以对a和b进行“按位或”运算,其中b的第10位置为1,其它位置为0,即 00100000 01010010|00000010 00000000=001000
35、10 01010010 t“按位异或”运算符l运算规则:参加运算的两个操作数,如果两个数的相应位的值不同,则该位的结果值为1,否则为0。l例如:如要把a的奇数位翻转,可以对a和b进行“按位异或”运算,其中b的奇数位置为1,偶数位置为0,即 00000000 01010010 01010101 01010101=01010101 00000111 04 三月 2023C+面向对象程序设计2.2.7 位运算符t“按位取反”运算符 l运算规则:对一个操作数的每一位都取反,即将1变为0,0变为1。l移位运算符t左移运算符l运算规则:对运算符左边的操作数的每一位全部左移右边运算量表示的位数,右边空出的位
36、补0。l左移1位相当于该数乘以2,左移n位相当于该数乘以2n。l例如:char a=0 x21;则a2的过程 001000012=10000100 即 a l运算规则:对运算符左边的运算量的每一位全部右移右边运算量表示的位数,右边低位被移出去舍弃掉,空出的高位补0还是补1,分两种情况t对无符号数进行右移时,空出的高位补0。这种右移称为逻辑右移。例如:unsigned char a=0 x8a;a:10001010 等于十进制数138 a1:01000101 0 等于十进制数69 补 0 舍弃t对带符号数进行右移时,空出的高位全部以符号位填补。即正数补0,负数补1。这种右移称为算术右移。04 三
37、月 2023C+面向对象程序设计2.2.7 位运算符l例如char a=0 x8a;a:10001010 等于十进制数-118 a1:11000101 0 等于十进制数-59 补 1 舍弃 l位赋值运算符t位运算符与赋值运算符结合可以组成位赋值运算符。04 三月 2023C+面向对象程序设计2.2.8 三目运算符tC+中唯一的三目运算符是条件运算符l语法格式为:t?:t“条件表达式”是C+中可以产生“真”和“假”结果的任何表达式,如果条件表达式的结果为“真”,则执行表达式1,否则执行表达式2。例如:n=(ab)?1:0;/如果ab成立,则n的 /值为1,否则为004 三月 2023C+面向对象
38、程序设计2.2.9 运算符的优先顺序t运算符优先顺序如下表:04 三月 2023C+面向对象程序设计2.2.9 运算符的优先顺序04 三月 2023C+面向对象程序设计2.2.10 运算式中的类型转换t当表达式中出现了多种类型数据的混合运算时,往往需要进行类型转换。表达式中的类型转换分为两种:自动转换和强制转换。l自动转换t自动转换的基本原则是将数据类型按照从低到高的顺序进行转换。类型越高,数据的表示范围越大,精度也越高,各种类型的高低顺序如下:char、short、int、unsigned、long、unsigned long、float、double04 三月 2023C+面向对象程序设计
39、2.2.10 运算式中的类型转换t自动转换遵循以下规则l若参与运算量的类型不同,则先转换成同一类型,然后进行运算。l转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。l所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。lchar型和short型参与运算时,必须先转换成int型。l在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。如果右边量的数据类型长度比左边量的数据类型长度长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入
40、向前舍入。04 三月 2023C+面向对象程序设计2.2.10 运算式中的类型转换l强制转换t强制类型转换是通过类型说明符和括号来实现的,其一般形式为:()或()t例如:(float)a /把a转换为实型 (int)(x+y)/把x+y的结果转换为整型 04 三月 2023C+面向对象程序设计2.3 基本控制结构t2.3.1 表达式语句、空语句和复合语句t2.3.2 选择控制语句t2.3.3 循环控制语句t2.3.4 break和continue语句t实训2 程序控制结构的应用 04 三月 2023C+面向对象程序设计2.3.1 表达式语句、空语句和复合语句t顺序结构程序就是由顺序执行语句组成
41、的,程序运行是按照书写的顺序进行,不发生控制转移,所以它是最简单的。t表达式语句 l表达式语句由表达式后加一个分号构成。l例如:a+b;num=3;t空语句l空语句仅由一个分号构成。l例如:;就是一个空语句t复合语句l复合语句是由一对大括号括起来的两条或两条以上的语句构成的。04 三月 2023C+面向对象程序设计2.3.1 表达式语句、空语句和复合语句l例如:l需要注意的是,在复合语句中定义的变量只作用于该复合语句的范围,而在复合语句外,这些变量却不能被调用。void main()t=x;x=y;y=t;/复合语句 04 三月 2023C+面向对象程序设计2.3.2 选择控制语句t选择结构是
42、用来判断所给定的条件是否满足,并根据判定的结果(真或假)决定哪些语句被执行。t用if语句实现选择结构lif语句是专门用来实现选择结构的语句。它根据给定的条件进行判断,以决定执行某个分支程序段。l其语法形式为:if ()else 04 三月 2023C+面向对象程序设计2.3.2 选择控制语句l例如:if(xy)max=x;else max=y;if语句中的语句2可以为空。当语句2为空 时,else可以省略。tif语句的嵌套l处理多分支的情况时,C+语言允许在if 或 if else 中的语句1或语句2部分中再使用if或 if else语句,这种设计方法称为嵌套。lif语句的嵌套中,else部分
43、总是与前面最靠近的、还没有配对的if配对。04 三月 2023C+面向对象程序设计2.3.2 选择控制语句l例如:比较两个数的大小#include using namespace std;void main()int x,y;coutxy;if(x!=y)if(xy)coutyendl;elsecoutxyendl;elsecoutx=yendl;04 三月 2023C+面向对象程序设计2.3.2 选择控制语句l如果if语句的嵌套都是发生在else分支中,就可以应用if else if语句。语法形式为:if ();else if();.else if();l例如:求分段函数y=f(x)的值,f
44、(x)的表达式如下:x2 1 (x1)04 三月 2023C+面向对象程序设计2.3.2 选择控制语句#include using namespace std;void main()float x,y;coutx;if(x=-1&x=1)y=x*x;else y=x*x+1;coutf(x)=yendl;04 三月 2023C+面向对象程序设计2.3.2 选择控制语句tswitch语句lC+语言提供了直接实现多分支选择结构的语句:switch语句,称为多分支语句,也叫开关语句。lswitch语句的语法形式如下:switch ()case :语句1;break;case :语句2;break;.
45、case :语句n;break;default:语句 n+1;break;04 三月 2023C+面向对象程序设计2.3.2 选择控制语句l使用switch语句需要注意的是:tswitch后面的表达式可以是整型、字符型、枚举型,而case后面的常量表达式的类型必须与其匹配。t每个case后面常量表达式的值必须各不相同,各case及default子句的先后次序不影响程序执行结果。t每个case分支可以有多条语句,但不必用。tcase后面的常量表达式仅起语句标号作用,并不进行条件判断。系统一旦找到入口标号,就从此标号开始执行,不再进行标号判断,所以必须加上break语句,以便结束switch语句,
46、否则会从入口点开始一直执行到switch结构的结束点。t当若干分支需要执行相同操作时,可以使多个case分支共用一组语句。04 三月 2023C+面向对象程序设计2.3.2 选择控制语句t例如:用switch语句实现计算器的简单功能。#include using namespace std;void main()float x,y;/运算数char oper;/运算符coutxopery;04 三月 2023C+面向对象程序设计2.3.2 选择控制语句 switch(oper)case+:coutx+y=x+yendl;break;case-:coutx-y=x-yendl;break;cas
47、e*:coutx*y=x*yendl;break;case/:if(y=0)coutdivisor is zero!n;break;coutx/y=x/yendl;break;default:coutoperator has no effect!n;04 三月 2023C+面向对象程序设计2.3.3 循环控制语句tC+中提供了三种循环控制语句:while语句、do-while语句和for语句。l while语句twhile语句的语法形式如下:while ()t其中表达式是循环条件,语句为循环体。执行顺序是:先判断表达式的值,当表达式为真时便开始执行while循环体中的语句,然后反复执行,每次执
48、行都会判断表达式是否为真,直到有一次执行循环体后条件表达式的值为假时终止。04 三月 2023C+面向对象程序设计2.3.3 循环控制语句t例如:用while语句求100以内的奇数之和。#include using namespace std;void main()int i=1,sum=0;while(i=100)sum+=i;i+=2;coutsum=sumendl;04 三月 2023C+面向对象程序设计2.3.3 循环控制语句t使用while语句需要注意的有:l如果循环体有多个语句时,要用大括号把它们括起来,以复合语句形式出现。l循环体中必须有修改条件表达式的语句,可以使条件由成立转为
49、不成立,从而结束循环。否则如果开始时条件为真,就会永远为真,使循环体永远重复执行下去,称为“死循环”。ldo-while语句tdo-while语句的语法形式如下:do while ();t执行顺序是:先执行循环中的语句,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while循环至少要执行一次循环语句。04 三月 2023C+面向对象程序设计2.3.3 循环控制语句t例如:用do-while语句求100以内的奇数之和。#include using namespace std;void main()int i=1,sum=0;dosum+=i;i+=2;whil
50、e(i=100);coutsum=sumendl;04 三月 2023C+面向对象程序设计2.3.3 循环控制语句lfor语句tfor语句的语法形式如下:for(表达式1;表达式2;表达式3)其中,表达式1:给循环控制变量赋初值;表达式2:循环条件,是一个逻辑表达式,它决定什么时候退出循环;表达式3:循环变量增值,规定循环控制变量每循环一次后按什么方式变化。tfor语句的执行流程是:首先计算一次表达式1的值,再计算表达式2(循环控制条件)的值,并根据表达式2的值判断是否执行循环体。04 三月 2023C+面向对象程序设计2.3.3 循环控制语句t例如:用for语句求100以内的奇数之和。#in