版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章运算符与流程控制第1页,共50页,2023年,2月20日,星期三4.1运算符运算符是一种符号,用来指定要在表达式中执行的操作。C++中常用的运算符有:算术运算符赋值运算符关系运算符逻辑运算符条件运算符第2页,共50页,2023年,2月20日,星期三4.1运算符学习运算符应注意:运算符功能与运算量关系要求运算量个数(单目,双目,三目)要求运算量类型运算符优先级别结合方向结果的类型第3页,共50页,2023年,2月20日,星期三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()第4页,共50页,2023年,2月20日,星期三4.1.1算术运算符算术表达式由以上各种算术运算符和常量或变量构成的式子叫做算术表达式。算术表达式的操作数主要是数值类型的数据和字符类型的数据第5页,共50页,2023年,2月20日,星期三4.1.1算术运算符算术运算时的类型转换当运算符两边的操作数不是同一种数据类型时,必须将它们先转换成同一类型的数据再进行运算。数据类型的转换有两种方式:隐式类型转换显示类型转换第6页,共50页,2023年,2月20日,星期三4.1.1算术运算符隐式类型转换什么情况下发生运算转换------不同类型数据混合运算时赋值转换------把一个值赋给与其类型不同的变量时输出转换------输出时转换成指定的输出格式函数调用转换------实参与形参类型不一致时转换运算转换规则:不同类型数据运算时先自动转换成同一类型第7页,共50页,2023年,2月20日,星期三说明:必定的转换运算对象类型不同时转换例charch;inti;floatf;doubled;ch/i+f*d-(f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble10+‘a’+i*f-d/l例inti;floatf;doubled;longl;doublefloatlongunsignedintchar,short低高unsignedlong第8页,共50页,2023年,2月20日,星期三4.1.1算术运算符显示类型转换(类型名)表达式类型名(表达式)例(int)x+y(double)(3/2)(int)3.6说明:强制转换得到所需类型的中间变量,原变量类型不变第9页,共50页,2023年,2月20日,星期三例题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算术运算符第10页,共50页,2023年,2月20日,星期三简单赋值运算符符号:=格式:变量标识符=表达式作用:将右侧的表达式求出结果,赋给其左侧的变量复合赋值运算符种类:+=-=*=/=%=《=》=&=^=|=含义: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赋值运算符第11页,共50页,2023年,2月20日,星期三说明:结合方向:自右向左优先级: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赋值运算符第12页,共50页,2023年,2月20日,星期三例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自增、自减运算符第13页,共50页,2023年,2月20日,星期三说明:++--不能用于常量和表达式,如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自增、自减运算符第14页,共50页,2023年,2月20日,星期三种类:<<===>=>!=结合方向:自左向右优先级别:<<=>>===!=高(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关系运算符第15页,共50页,2023年,2月20日,星期三例注意区分“=”与“==”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关系运算符第16页,共50页,2023年,2月20日,星期三种类:!&&||逻辑运算真值表ab!a!ba&&ba||b真假真假假假真真真假假假假假真真假假真真真假真真4.1.5逻辑运算符第17页,共50页,2023年,2月20日,星期三!(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第18页,共50页,2023年,2月20日,星期三逻辑运算符的短路特性:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符例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逻辑运算符第19页,共50页,2023年,2月20日,星期三条件运算符是唯一的一个三目运算符,格式:expr1?expr2:expr3首先计算expr1的值,如果是true则返回的结果是表达式expr2;否则返回的结果是表达式expr34.1.6条件运算符第20页,共50页,2023年,2月20日,星期三条件运算符一般形式: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条件运算符第21页,共50页,2023年,2月20日,星期三4.1.7sizeof运算符
sizeof运算符用于计算某种数据类型的运算对象在计算机中所占用的存储空间的字节数。sizeof(数据类型)或者sizeof(表达式)第22页,共50页,2023年,2月20日,星期三4.1.8逗号运算符
逗号运算符是“,”,用它可以将多个表达式连接起来,格式如下:表达式1,表达式2,表达式3,…,表达式n它的运算过程是:按照从左到右的顺序依次求出各表达式的值,并把最后一个表达式的值作为整个表达式的值。例题:(a=4,a+5,y=8)+5第23页,共50页,2023年,2月20日,星期三4.2分支结构有时候出于某种特殊目的,命令的执行是有条件的、选择的被执行,不是在任何情况下都要执行这些命令,我们把这种程序结构叫做分支结构或选择结构。第24页,共50页,2023年,2月20日,星期三4.2.1if语句
用if语句实现单个分支选择执行结构。if(表达式) 语句|{语句块};执行逻辑如下图所示:第25页,共50页,2023年,2月20日,星期三用if语句实现双分支选择执行结构if(表达式) 语句1|{语句块1}else 语句2|{语句块2}执行逻辑如右图所示:4.2.1if语句
第26页,共50页,2023年,2月20日,星期三用if语句实现多分支选择执行结构if(表达式1) 语句1|{语句块1}elseif(表达式2) 语句2|{语句块2}……elseif(表达式n-1) 语句n-1|{语句块n-1}else 语句n|{语句块n}4.2.1if语句
第27页,共50页,2023年,2月20日,星期三
if~else配对原则:缺省{}时,else总是和它上面离它最近的未配对的if配对if(……)if(……)if(……)else…...else…...else…...if…else…语句的嵌套4.2.1if语句
第28页,共50页,2023年,2月20日,星期三例: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语句
第29页,共50页,2023年,2月20日,星期三4.2.2switch语句
switch语句也可以实现程序的分支结构,当判断条件比较多时,选择switch语句更合适。因为它的结构比较清晰,不容易出错。switch语句的格式如下第30页,共50页,2023年,2月20日,星期三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第31页,共50页,2023年,2月20日,星期三当执行switch语句时,条件表达式的值与常量表达式的值比较,如果哪一个case后面的常量表达式的值与条件表达式的值相等,那么程序将执行这个case后面紧跟的语句,直到遇到break才会跳出switch语句。如果没有一个常量表达式的值与条件表达式的值相等,那么程序则执行default后面紧跟的语句。注意switch语句中,程序是以匹配的case语句作为入口,相对应的break语句作为出口的。如果漏掉了其中一个break语句,那么程序将会一直执行,直到遇到下一个break语句或执行完default语句。多个case可共用一组执行语句例题:4.2.2switch语句
第32页,共50页,2023年,2月20日,星期三4.3循环结构循环就是在某个条件保持为真时重复地执行一组语句,直到条件不再符合。在C++中,又可以分为while循环语句、do…while循环语句、for循环语句三种。第33页,共50页,2023年,2月20日,星期三4.3.1while循环
while循环语句while语句的语法如下:while(表达式){语句组;}第34页,共50页,2023年,2月20日,星期三例用while循环求#include<iostream.h>voidmain(){inti,sum=0;i=1;while(i<=100){sum+=i;i++;}cout<<“sum=“<<sum<<endl;}循环初值循环终值循环变量增值循环条件循环体第35页,共50页,2023年,2月20日,星期三do…while循环语句
do{语句组;}while(表达式);4.3.2do-while循环第36页,共50页,2023年,2月20日,星期三do…while循环与while循环的区别是:while循环先判断后执行,do…while循环先执行后判断do…while循环体至少要执行一次,然后才判断表达式的值是否为真。注意while语句后带的分号。4.3.2do-while循环第37页,共50页,2023年,2月20日,星期三for(<表达式1>;<表达式2>;<表达式3>){<语句>;}表2循环体假(0)真(非0)for表达式1表34.3.3for循环第38页,共50页,2023年,2月20日,星期三例:求数字1到10的平方的和(12+22+…+102)。#include<iostream.h>voidmain(){ for(inti=1,sum=0;i<=10;i++) { sum=sum+i*i; } cout<<"Thesumis:"<<sum;}第39页,共50页,2023年,2月20日,星期三4.3.4循环语句的嵌套
一个循环语句中包含一个或多个其他的循环语句,这就叫循环语句的嵌套。用循环语句的嵌套解决单重循环不能完成的问题。第40页,共50页,2023年,2月20日,星期三例题4-16用双重循环输出一个单位矩阵。从键盘上任意输入一个整数n,程序将输出一个以n值为行、列的单位矩阵。练习:打印乘法口诀表4.3.4循环语句的嵌套
第41页,共50页,2023年,2月20日,星期三
break语句格式:break;功能:用在循环语句和switch语句中,终止并跳出循环体或开关体说明:break只能终止并跳出最近一层的结构break不能用于循环语句和switch语句之外的任何其它语句之中例题:从键盘输入任意个整数,求其中正数的和。(以0作为输入结束的标志)4.4跳转语句第42页,共50页,2023年,2月20日,星期三continue语句格式:continue;功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次循环仅用于循环语句中4.4跳转语句第43页,共50页,2023年,2月20日,星期三4.5变量的作用域
一个变量能够被访问的区域叫做变量的作用域,本节将介绍三种不同类型的作用域:文件作用域局部作用域类作用域第44页,共50页,2023年,2月20日,星期三4.5.1文件作用域
变
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 车间内部承包岗位合同范本
- 《Z企业并购S集团财务风险控制案例研究》
- 《悬吊训练对冰球专项学生核心稳定性的实验研究》
- 《20世纪以来西方文论汉译中背离现象研究》
- 《莱芜地区儿童肺炎支原体肺炎发病状况及患者免疫功能检测》
- 2024年度乙方向甲方提供健康咨询服务的合同
- 2024年度版权转让合同涉及的权益分配
- 《乏油-动载-热效应下行星齿轮系统的动力学特性研究》
- 郑州大学《艺术雕塑》2022-2023学年第一学期期末试卷
- 工地服务合同范本
- 2024年爱国知识竞赛考试题库400题(供参考)
- 《糖尿病与肥胖》课件
- 水文监测运维方案
- 紫薇花的栽培管理方法及注意事项
- 胶轮车司机:胶轮车司机考试试题
- 舜宇集团2024测试题
- 【生物】呼吸道对空气的处理教学课件-2023-2024学年人教版七年级下册
- 2024年长沙卫生职业学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析
- 报告教练林丹李宗伟
- 《足球理论教学》课件
- 2024年廖俊波同志先进事迹心得体会教师4篇
评论
0/150
提交评论