《第四章 运算符与流程控制优秀课件.ppt》由会员分享,可在线阅读,更多相关《第四章 运算符与流程控制优秀课件.ppt(50页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章第四章 运算符与流程控制运算符与流程控制第1页,本讲稿共50页4.1 运算符 运算符是一种符号,用来指定要在表达式中执行的操作。C+中常用的运算符有:算术运算符赋值运算符关系运算符逻辑运算符条件运算符 第2页,本讲稿共50页4.1 运算符学习运算符应注意:运算符功能与运算量关系n要求运算量个数(单目,双目,三目)n要求运算量类型运算符优先级别结合方向结果的类型第3页,本讲稿共50页4.1.1 算术运算符算术运算符n基本算术运算符:+-*/%l功能:取模运算符%用于计算两整数相除后得到的余数l结合方向:从左向右l优先级:*/%-+-(13)(12)说明:l两整数相除,结果为整数l%要求两侧
2、均为整型数据例 5/2 =-5/2.0 =例 5%2 =-5%2 =1%10 =5%1 =5.5%2例 5/2 =2 -5/2.0=-2.5例 5%2 =1 -5%2 =-1 1%10 =1 5%1 =0 5.5%2 ()第4页,本讲稿共50页4.1.1 算术运算符算术表达式由以上各种算术运算符和常量或变量构成的式子叫做算术表达式。算术表达式的操作数主要是数值类型的数据和字符类型的数据 第5页,本讲稿共50页4.1.1 算术运算符算术运算时的类型转换当运算符两边的操作数不是同一种数据类型时,必须将它们先转换成同一类型的数据再进行运算。数据类型的转换有两种方式:n隐式类型转换n显示类型转换第6页
3、,本讲稿共50页4.1.1 算术运算符隐式类型转换n什么情况下发生l运算转换-不同类型数据混合运算时l赋值转换-把一个值赋给与其类型不同的变量时l输出转换-输出时转换成指定的输出格式l函数调用转换-实参与形参类型不一致时转换n运算转换规则:不同类型数据运算时先自动转换成同一类型第7页,本讲稿共50页说明:必定的转换运算对象类型不同时转换例 char ch;int i;float f;double d;ch/i +f*d -(f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledoub
4、le10+a +i*f -d/l例 int i;float f;double d;long l;doublefloatlongunsignedintchar,short低高unsigned long第8页,本讲稿共50页4.1.1 算术运算符显示类型转换n(类型名)表达式 n 类型名(表达式)例 (int)x+y (double)(3/2)(int)3.6 n说明:强制转换得到所需类型的中间变量,原变量类型不变 第9页,本讲稿共50页例题4-1 将double类型的数据和int类型的数据进行显示转换。#include void main()double a=10.6;int b=5;b=b+i
5、nt(a);/将double类型的数据强制转换为int型的数据 coutbendl;char c=A;c=c+(char)b;/将int类型的数据转换为char类型的数据。coutcendl;4.1.1 算术运算符第10页,本讲稿共50页n简单赋值运算符l符号:=l格式:变量标识符=表达式l作用:将右侧的表达式求出结果,赋给其左侧的变量n复合赋值运算符l种类:+=-=*=/=%=&=|=l含义:exp1 op=exp2 exp1=exp1 op exp2a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3例 a=3;d=func();c=d+2;4.1.2 赋值运算符第11页,本
6、讲稿共50页n说明:l结合方向:自右向左l优先级:2l左侧必须是变量,不能是常量或表达式l赋值表达式的值与变量值相等,且可嵌套l赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型例 3=x-2*y;a+b=3;例 float f;int i;i=10;f=i;则 f=10.0例 int i;i=2.56;/结果i=2;例:a=b=c=5 a=(b=5)a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)/表达式值为5,a,b,c值为5/b=5;a=5/表达式值11,c=6,a=11/表达式值10,a=10,b=4,c=6/表达式值5,a=5,b=10,c=24.1
7、.2 赋值运算符第12页,本讲稿共50页例 j=3;k=+j;j=3;k=j+;j=3;cout+jendl;j=3;coutj+endl;a=3;b=5;c=(+a)*b;a=3;b=5;c=(a+)*b;/k=4,j=4/k=3,j=4/4/3/c=20,a=4/c=15,a=4自增、自减运算符+-作用:使变量值加1或减1种类:前缀 +i,-i (先执行i+1或i-1,再使用i值)后缀 i+,i-(先使用i值,再执行i+1或i-1)4.1.3 自增、自减运算符第13页,本讲稿共50页l说明:+-不能用于常量和表达式,如5+,(a+b)+-结合方向:自右向左优先级:15例-i+-(i+)i=
8、3;cout-i+endl;/-3 例-i+i=3;cout-i+endl;自增、自减运算符+-作用:使变量值加1或减1种类:前缀 +i,-i (先执行i+1或i-1,再使用i值)后缀 i+,i-(先使用i值,再执行i+1或i-1)4.1.3 自增、自减运算符第14页,本讲稿共50页种类:=!=结合方向:自左向右优先级别:=!=高(10)低(9)例 ca+b /c(a+b)ab!=c /(ab)!=c a=bc /a=(bc /a=(bc)关系表达式的值:是逻辑值“真”或“假”,用1和0表示例 int a=3,b=2,c=1,d,f;ab (ab)=c b+cb f=abc/表达式值1/表达式
9、值1/表达式值0/d=1/f=04.1.4 关系运算符第15页,本讲稿共50页例 注意区分“=”与“=”int a=0,b=1;if(a=b)cout“a equal to b“;else cout“a not equal to b“;int a=0,b=1;if(a=b)cout“a equal to b“;else cout“a not equal to b“;4.1.4 关系运算符第16页,本讲稿共50页种类:!&|逻辑运算真值表ab!a!ba&ba|b真假真假假假真真真假假假假假真真假假真真真假真真4.1.5 逻辑运算符第17页,本讲稿共50页!(15)&(5)|(4)高低例 a=x&
10、xb&xy a=b|x=y !a|abl优先级:l结合方向:!:从右向左&:从左向右|:从左向右/(a=x)&(xb)&(xy)/(a=b)|(x=y)/(!a)|(ab)4.1.5 逻辑运算符例 a=4;b=5;!a a&b a|b !a|b 4&0|2 53&2|83)&2|(8b)&(n=cd)/结果m=0,n=14.1.5 逻辑运算符第19页,本讲稿共50页条件运算符是唯一的一个三目运算符,格式:expr1?expr2:expr3首先计算expr1的值,如果是true 则返回的结果是表达式expr2;否则返回的结果是表达式expr34.1.6 条件运算符第20页,本讲稿共50页条件运算
11、符n一般形式:expr1?expr2 :expr3n执行过程expr1取expr2值取expr3值非0=0例 (a=b)?Y:N (x%2=1)?1:0 (x=0)?x:-x (c=a&c=z)?c-a+A:c4.1.6 条件运算符第21页,本讲稿共50页4.1.7 sizeof运算符sizeof运算符用于计算某种数据类型的运算对象在计算机中所占用的存储空间的字节数。sizeof(数据类型)或者 sizeof(表达式)第22页,本讲稿共50页4.1.8 逗号运算符逗号运算符是“,”,用它可以将多个表达式连接起来,格式如下:表达式1,表达式2,表达式3,表达式n 它的运算过程是:按照从左到右的顺
12、序依次求出各表达式的值,并把最后一个表达式的值作为整个表达式的值。例题:(a=4,a+5,y=8)+5第23页,本讲稿共50页4.2 分支结构 有时候出于某种特殊目的,命令的执行是有条件的、选择的被执行,不是在任何情况下都要执行这些命令,我们把这种程序结构叫做分支结构或选择结构。第24页,本讲稿共50页4.2.1 if语句用if语句实现单个分支选择执行结构。if(表达式)语句|语句块;执行逻辑如下图所示:第25页,本讲稿共50页用if语句实现双分支选择执行结构 if(表达式)语句1|语句块1 else语句2|语句块2执行逻辑如右图所示:4.2.1 if语句第26页,本讲稿共50页用if语句实现
13、多分支选择执行结构 if(表达式1)语句1|语句块1 else if(表达式2)语句2|语句块2else if(表达式n-1)语句n-1|语句块n-1 else语句n|语句块n4.2.1 if语句第27页,本讲稿共50页 if else 配对原则:缺省 时,else总是和它上面离它最近的未配对的if配对if()if()if()else.else.else.if else 语句的嵌套语句的嵌套4.2.1 if语句第28页,本讲稿共50页例:if(a=b)if(b=c)printf(“a=b=c”);else printf(“a!=b”);修改:if(a=b)if(b=c)printf(“a=b=
14、c”);else printf(“a!=b”);实现if else 正确配对方法:加 4.2.1 if语句第29页,本讲稿共50页4.2.2 switch语句switch语句也可以实现程序的分支结构,当判断条件比较多时,选择switch语句更合适。因为它的结构比较清晰,不容易出错。switch语句的格式如下 第30页,本讲稿共50页switch语句的语法如下:switch(表达式)case 常量表达式1:语句序列1;break;case 常量表达式2:语句序列2;break;case 常量表达式n:语句序列n;break;default:语句序列n+1;4.2.2 switch语句switch
15、表达式语句序列1语句序列2语句序列n语句n+1.常量表达式1常量表达式2常量表达式ndefaultcase 第31页,本讲稿共50页v当执行switch语句时,条件表达式的值与常量表达式的值比较,如果哪一个case后面的常量表达式的值与条件表达式的值相等,那么程序将执行这个case后面紧跟的语句,直到遇到break才会跳出switch语句。v如果没有一个常量表达式的值与条件表达式的值相等,那么程序则执行default后面紧跟的语句。v注意 switch语句中,程序是以匹配的case语句作为入口,相对应的break语句作为出口的。如果漏掉了其中一个break语句,那么程序将会一直执行,直到遇到下
16、一个break语句或执行完default语句。v多个case可共用一组执行语句例题:4.2.2 switch语句第32页,本讲稿共50页4.3 循环结构 循环就是在某个条件保持为真时重复地执行一组语句,直到条件不再符合。在C+中,又可以分为while循环语句、dowhile循环语句、for循环语句三种。第33页,本讲稿共50页4.3.1 while循环 while循环语句 while语句的语法如下:while(表达式)语句组;第34页,本讲稿共50页例 用while循环求#include void main()int i,sum=0;i=1;while(i=100)sum+=i;i+;cout
17、“sum=“sumendl;循环初值循环终值循环变量增值循环条件循环体第35页,本讲稿共50页dowhile循环语句 do 语句组;while(表达式);4.3.2 do-while循环第36页,本讲稿共50页dowhile循环与while循环的区别是:while循环先判断后执行,dowhile循环先执行后判断dowhile循环体至少要执行一次,然后才判断表达式的值是否为真。注意while语句后带的分号。4.3.2 do-while循环第37页,本讲稿共50页for(;);表2循环体假(0)真(非0)for表达式1表34.3.3 for循环第38页,本讲稿共50页v例:求数字1到10的平方的和
18、(1222102)。#include void main()for(int i=1,sum=0;i=10;i+)sum=sum+i*i;coutThe sum is:sum;第39页,本讲稿共50页4.3.4 循环语句的嵌套一个循环语句中包含一个或多个其他的循环语句,这就叫循环语句的嵌套。用循环语句的嵌套解决单重循环不能完成的问题。第40页,本讲稿共50页例题4-16 用双重循环输出一个单位矩阵。从键盘上任意输入一个整数n,程序将输出一个以n值为行、列的单位矩阵。练习:打印乘法口诀表4.3.4 循环语句的嵌套第41页,本讲稿共50页 break语句n格式:break;n功能:用在循环语句和sw
19、itch语句中,终止并跳出循环体或开关体n说明:lbreak只能终止并跳出最近一层的结构lbreak不能用于循环语句和switch语句之外的任何其它语句之中例题:从键盘输入任意个整数,求其中正数的和。(以0作为输入结束的标志)4.4 跳转语句第42页,本讲稿共50页continue语句v格式:continue;v功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次循环v仅用于循环语句中4.4 跳转语句第43页,本讲稿共50页4.5 变量的作用域一个变量能够被访问的区域叫做变量的作用域,本节将介绍三种不同类型的作用域:文件作用域局部作用域类作用域第44页,本讲稿共50页4.5.1 文件作用
20、域变量的文件作用域是指,当一个变量在任何函数之外定义,那么它的使用范围就是从定义或声明该变量开始至整个文件结束,这个范围的任何一个函数或类都可以使用该变量。第45页,本讲稿共50页例题4-19 定义文件级变量,使得类和函数都可以访问该变量。#include int a;/定义文件级变量aclass A public:int b;A()b=a;void main()a=100;A obj;coutobj.bendl;第46页,本讲稿共50页声明变量 声明变量的目的是为了增大文件级变量的使用范围,使得程序在定义变量之前就可以访问到该变量。声明变量的语法格式如下:extern 数据类型 变量名;声明
21、后的变量也是有作用范围的,它的作用范围是从声明该变量开始至整个文件结束。第47页,本讲稿共50页例题4-20 声明变量的作用域。#include class A public:int b;A()b=a;/访问a会出错;void main()extern int a;/声明变量a放到main函数中,作用域从这开始至文件结束a=100;A obj;coutobj.bendl;int a;第48页,本讲稿共50页4.5.2 局部作用域变量的局部作用域是指一个变量的使用范围只局限在程序的某些地方,而不是整个文件都可以访问。局部作用域分为两类:函数级局部作用域和块级局部作用域。函数级局部作用域 块级局部作用域 第49页,本讲稿共50页4.5.3 类作用域类的作用域简称类域,是指在类的定义中由一对花括号括起来的部分。每个类都有类域,它的成员都属于这个类域。具体地讲,类中某个成员的作用域包括如下几种情况:在类体内部,类中的成员函数可以访问类的数据成员和其他成员函数。当类的成员是公有访问符时,可以在类体外部由类的对象或类的指针引用。第50页,本讲稿共50页
限制150内