版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章运算符与流程控制第一页,共五十页,2022年,8月28日4.1运算符运算符是一种符号,用来指定要在表达式中执行的操作。C++中常用的运算符有:算术运算符赋值运算符关系运算符逻辑运算符条件运算符第二页,共五十页,2022年,8月28日4.1运算符学习运算符应注意:运算符功能与运算量关系要求运算量个数(单目,双目,三目)要求运算量类型运算符优先级别结合方向结果的类型第三页,共五十页,2022年,8月28日4.1.1算术运算符算术运算符基本算术运算符:+-*/%功能:取模运算符%用于计算两整数相除后得到的余数结合方向:从左向右优先级:*/%----->+-
(13)(12)
说明:两整数相除,结果为整数%要求两侧均为整型数据例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=-11%10=
1
5%1=
05.5%2()第四页,共五十页,2022年,8月28日4.1.1算术运算符算术表达式由以上各种算术运算符和常量或变量构成的式子叫做算术表达式。算术表达式的操作数主要是数值类型的数据和字符类型的数据第五页,共五十页,2022年,8月28日4.1.1算术运算符算术运算时的类型转换当运算符两边的操作数不是同一种数据类型时,必须将它们先转换成同一类型的数据再进行运算。数据类型的转换有两种方式:隐式类型转换显示类型转换第六页,共五十页,2022年,8月28日4.1.1算术运算符隐式类型转换什么情况下发生运算转换------不同类型数据混合运算时赋值转换------把一个值赋给与其类型不同的变量时输出转换------输出时转换成指定的输出格式函数调用转换------实参与形参类型不一致时转换运算转换规则:不同类型数据运算时先自动转换成同一类型第七页,共五十页,2022年,8月28日说明:必定的转换运算对象类型不同时转换例charch;inti;floatf;doubled;ch/i+f*d-(f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble10+‘a’+i*f-d/l例inti;floatf;doubled;longl;doublefloatlongunsignedintchar,short低高unsignedlong第八页,共五十页,2022年,8月28日4.1.1算术运算符显示类型转换(类型名)表达式类型名(表达式)例(int)x+y(double)(3/2)(int)3.6说明:强制转换得到所需类型的中间变量,原变量类型不变第九页,共五十页,2022年,8月28日例题4-1将double类型的数据和int类型的数据进行显示转换。#include<iostream.h>voidmain(){doublea=10.6;intb=5;b=b+int(a);//将double类型的数据强制转换为int型的数据cout<<b<<endl;charc='A';c=c+(char)b;//将int类型的数据转换为char类型的数据。cout<<c<<endl;}4.1.1算术运算符第十页,共五十页,2022年,8月28日简单赋值运算符符号:=格式:变量标识符=表达式作用:将右侧的表达式求出结果,赋给其左侧的变量复合赋值运算符种类:+=-=*=/=%=《=》=&=^=|=含义:exp1op=exp2
exp1=exp1opexp2a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3例a=3;d=func();c=d+2;4.1.2赋值运算符第十一页,共五十页,2022年,8月28日说明:结合方向:自右向左优先级:2左侧必须是变量,不能是常量或表达式赋值表达式的值与变量值相等,且可嵌套赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型例3=x-2*y;a+b=3;例
floatf;inti;i=10;f=i;则
f=10.0例inti;i=2.56;//结果i=2;例:a=b=c=5a=(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.2赋值运算符第十二页,共五十页,2022年,8月28日例j=3;k=++j;j=3;k=j++;j=3;cout<<++j<<endl;j=3;cout<<j++<<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自增、自减运算符第十三页,共五十页,2022年,8月28日说明:++--不能用于常量和表达式,如5++,(a+b)++++--结合方向:自右向左优先级:15例-i++-(i++)i=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自增、自减运算符第十四页,共五十页,2022年,8月28日种类:<<===>=>!=结合方向:自左向右优先级别:<<=>>===!=高(10)低(9)例c>a+b//c>(a+b)a>b!=c//(a>b)!=ca==b<c//a==(b<c)a=b>c//a=(b>c)关系表达式的值:是逻辑值“真”或“假”,用1和0表示例inta=3,b=2,c=1,d,f;a>b(a>b)==cb+c<ad=a>bf=a>b>c//表达式值1//表达式值1//表达式值0//d=1//f=04.1.4关系运算符第十五页,共五十页,2022年,8月28日例注意区分“=”与“==”inta=0,b=1;if(a=b)cout<<“aequaltob“;elsecout<<“anotequaltob“;inta=0,b=1;if(a==b)cout<<“aequaltob“;else
cout<<“anotequaltob“;4.1.4关系运算符第十六页,共五十页,2022年,8月28日种类:!&&||逻辑运算真值表ab!a!ba&&ba||b真假真假假假真真真假假假假假真真假假真真真假真真4.1.5逻辑运算符第十七页,共五十页,2022年,8月28日!(15)&&(5)||(4)高低例a<=x&&x<=b
a>b&&x>ya==b||x==y!a||a>b优先级:结合方向:!:从右向左&&:从左向右||:从左向右//(a<=x)&&(x<=b)//(a>b)&&(x>y)//(a==b)||(x==y)//(!a)||(a>b)4.1.5逻辑运算符例a=4;b=5;!aa&&ba||b!a||b4&&0||25>3&&2||8<4-!0‘c’&&‘d’值为1值为0值为1值为1值为1值为1//(5>3)&&2||(8<(4-(!0)))值为1第十八页,共五十页,2022年,8月28日逻辑运算符的短路特性:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符例a&&b&&c//只在a为真时,才判别b的值;只在a、b都为真时,才判别c的值例a||b||c//只在a为假时,才判别b的值;只在a、b都为假时,才判别c的值例a=1;b=2;c=3;d=4;m=1;n=1(初始值);(m=a>b)&&(n=c>d)//结果m=0,n=14.1.5逻辑运算符第十九页,共五十页,2022年,8月28日条件运算符是唯一的一个三目运算符,格式:expr1?expr2:expr3首先计算expr1的值,如果是true则返回的结果是表达式expr2;否则返回的结果是表达式expr34.1.6条件运算符第二十页,共五十页,2022年,8月28日条件运算符一般形式:expr1?expr2:expr3执行过程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条件运算符第二十一页,共五十页,2022年,8月28日4.1.7sizeof运算符
sizeof运算符用于计算某种数据类型的运算对象在计算机中所占用的存储空间的字节数。sizeof(数据类型)或者sizeof(表达式)第二十二页,共五十页,2022年,8月28日4.1.8逗号运算符
逗号运算符是“,”,用它可以将多个表达式连接起来,格式如下:表达式1,表达式2,表达式3,…,表达式n它的运算过程是:按照从左到右的顺序依次求出各表达式的值,并把最后一个表达式的值作为整个表达式的值。例题:(a=4,a+5,y=8)+5第二十三页,共五十页,2022年,8月28日4.2分支结构有时候出于某种特殊目的,命令的执行是有条件的、选择的被执行,不是在任何情况下都要执行这些命令,我们把这种程序结构叫做分支结构或选择结构。第二十四页,共五十页,2022年,8月28日4.2.1if语句
用if语句实现单个分支选择执行结构。if(表达式) 语句|{语句块};执行逻辑如下图所示:第二十五页,共五十页,2022年,8月28日用if语句实现双分支选择执行结构if(表达式) 语句1|{语句块1}else 语句2|{语句块2}执行逻辑如右图所示:4.2.1if语句
第二十六页,共五十页,2022年,8月28日用if语句实现多分支选择执行结构if(表达式1) 语句1|{语句块1}elseif(表达式2) 语句2|{语句块2}……elseif(表达式n-1) 语句n-1|{语句块n-1}else 语句n|{语句块n}4.2.1if语句
第二十七页,共五十页,2022年,8月28日
if~else配对原则:缺省{}时,else总是和它上面离它最近的未配对的if配对if(……)if(……)if(……)else…...else…...else…...if…else…语句的嵌套4.2.1if语句
第二十八页,共五十页,2022年,8月28日例:if(a==b)if(b==c)printf(“a==b==c”);elseprintf(“a!=b”);修改:if(a==b){if(b==c)printf(“a==b==c”);}elseprintf(“a!=b”);实现if~else正确配对方法:加{}4.2.1if语句
第二十九页,共五十页,2022年,8月28日4.2.2switch语句
switch语句也可以实现程序的分支结构,当判断条件比较多时,选择switch语句更合适。因为它的结构比较清晰,不容易出错。switch语句的格式如下第三十页,共五十页,2022年,8月28日switch语句的语法如下:switch(表达式){case常量表达式1:语句序列1;break;case常量表达式2:语句序列2;break;
…
…case常量表达式n:语句序列n;break;default:语句序列n+1;}4.2.2switch语句
switch表达式语句序列1语句序列2语句序列n语句n+1…...常量表达式1常量表达式2常量表达式ndefaultcase第三十一页,共五十页,2022年,8月28日当执行switch语句时,条件表达式的值与常量表达式的值比较,如果哪一个case后面的常量表达式的值与条件表达式的值相等,那么程序将执行这个case后面紧跟的语句,直到遇到break才会跳出switch语句。如果没有一个常量表达式的值与条件表达式的值相等,那么程序则执行default后面紧跟的语句。注意switch语句中,程序是以匹配的case语句作为入口,相对应的break语句作为出口的。如果漏掉了其中一个break语句,那么程序将会一直执行,直到遇到下一个break语句或执行完default语句。多个case可共用一组执行语句例题:4.2.2switch语句
第三十二页,共五十页,2022年,8月28日4.3循环结构循环就是在某个条件保持为真时重复地执行一组语句,直到条件不再符合。在C++中,又可以分为while循环语句、do…while循环语句、for循环语句三种。第三十三页,共五十页,2022年,8月28日4.3.1while循环
while循环语句while语句的语法如下:while(表达式){语句组;}第三十四页,共五十页,2022年,8月28日例用while循环求#include<iostream.h>voidmain(){inti,sum=0;i=1;while(i<=100){sum+=i;i++;}cout<<“sum=“<<sum<<endl;}循环初值循环终值循环变量增值循环条件循环体第三十五页,共五十页,2022年,8月28日do…while循环语句
do{语句组;}while(表达式);4.3.2do-while循环第三十六页,共五十页,2022年,8月28日do…while循环与while循环的区别是:while循环先判断后执行,do…while循环先执行后判断do…while循环体至少要执行一次,然后才判断表达式的值是否为真。注意while语句后带的分号。4.3.2do-while循环第三十七页,共五十页,2022年,8月28日for(<表达式1>;<表达式2>;<表达式3>){<语句>;}表2循环体假(0)真(非0)for表达式1表34.3.3for循环第三十八页,共五十页,2022年,8月28日例:求数字1到10的平方的和(12+22+…+102)。#include<iostream.h>voidmain(){ for(inti=1,sum=0;i<=10;i++) { sum=sum+i*i; } cout<<"Thesumis:"<<sum;}第三十九页,共五十页,2022年,8月28日4.3.4循环语句的嵌套
一个循环语句中包含一个或多个其他的循环语句,这就叫循环语句的嵌套。用循环语句的嵌套解决单重循环不能完成的问题。第四十页,共五十页,2022年,8月28日例题4-16用双重循环输出一个单位矩阵。从键盘上任意输入一个整数n,程序将输出一个以n值为行、列的单位矩阵。练习:打印乘法口诀表4.3.4循环语句的嵌套
第四十一页,共五十页,2022年,8月28日
break语句格式:break;功能:用在循环语句和switch语句中,终止并跳出循环体或开关体说明:break只能终止并跳出最近一层的结构break不能用于循环语句和switch语句之外的任何其它语句之中例题:从键盘输入任意个整数,求其中正数的和。(以0作为输入结束的标志)4.4跳转语句第四十二页,共五十页,2022年,8月28日continue语句格式:continue;功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次循环仅用于循环语句中4.4跳转语句第四十三页,共五十页,2022年,8月28日4.5变量的作用域
一个变量能够被访问的区域叫做变量的作用域,本节将介绍三种不同类型的作用域:文件作用域局部作用域类作用域第四十四页,共五十页,2022年,8月28日4.5.1文件作用域
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生鲜培训课件教学课件
- 2024年广告销售代理合同
- 2024年度企业级云计算服务平台合作合同
- 2024国际快递运输服务合同详细条款
- 大班课件春节教学课件
- 真菌课件图文教学课件
- 2024年度企业科技创新与研发外包合同协议书
- 2024年建筑工程施工合同与工程监理协议
- 2024物业合同纠纷案件
- 2024中船工贸公司船舶建造合同版本
- 雅鲁藏布江大拐弯巨型水电站规划方案
- 广西基本医疗保险门诊特殊慢性病申报表
- 城市经济学习题与答案
- 国开成本会计第14章综合练习试题及答案
- 幼儿园大班科学:《树叶为什么会变黄》课件
- 1到50带圈数字直接复制
- 铁路工程施工组织设计(施工方案)编制分类
- 幼儿园中班数学《有趣的图形》课件
- 《规划每一天》教案2021
- 草莓创意主题实用框架模板ppt
- 山大口腔颌面外科学课件第5章 口腔种植外科-1概论、口腔种植的生物学基础
评论
0/150
提交评论