《C语言程序设计与数据结构》课件第04章.ppt

上传人:s****8 文档编号:82773950 上传时间:2023-03-26 格式:PPT 页数:19 大小:1.42MB
返回 下载 相关 举报
《C语言程序设计与数据结构》课件第04章.ppt_第1页
第1页 / 共19页
《C语言程序设计与数据结构》课件第04章.ppt_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《《C语言程序设计与数据结构》课件第04章.ppt》由会员分享,可在线阅读,更多相关《《C语言程序设计与数据结构》课件第04章.ppt(19页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第四章第四章 选择结构选择结构 学习重点学习重点lif语句及switch语句的执行流程;lif语句及switch语句的灵活运用。C语言程序设计与数据结构4.14.1关系运算和逻辑运算关系运算和逻辑运算 C语言编译系统在给出逻辑运算结果时,会得出两个逻辑值(“真”和“假”)中的一个。以数值1代表“真”,以数值0代表“假”。但在判决一个量是否为真时,以非代表“真”,以0代表“假”。如已知x值为5,则x8不成立,表达式x8的值为“假”.4.1.14.1.1关系运算符和关系表达式关系运算符和关系表达式4.1.1.1 4.1.1.1 关系运算符及其结合性关系运算符及其结合性关系运算是逻辑运算中比较简单的

2、一种。所谓关系运算实际上是“比较运算”,将两个数进行比较,判断比较的结果是否符合指定的条件。比较两个量的运算符称为关系运算符。语言提供了以下6种关系运算符:1)小于2)大于4)=大于或等于5)=等于6)!=不等于注意:注意:由两个字符组成的运算符之间不能有空格,如:=不能写成=。关系运算符都是双目运算符,其结合性均为自左至右。在六个关系运算符中,前4个(,=)的优先级相同,并高于后两个(=和!=,=和!=的优先级相同)。关系运算符、算术运算符和赋值运算符的优先级次序从高到低分别是:算术运算符、关系运算符、赋值运算符。C语言程序设计与数据结构4.1.1.2 关系表达式关系表达式用关系运算符将两个

3、表达式连接起来的式子称为关系表达式。关系表达式的一般形式为:表达式表达式关系运算符关系运算符表达式表达式说明说明:关系运算符两边的两个表达式自身可以是C语言中的任意合法表达式(如算术表达式,赋值表达式,也可以是关系表达式和马上就要学到的逻辑表达式)。例如:a+bc-d、x3/2、a+1(bc)、a!=(c=d)等。关系表达式的值是逻辑值“真”和“假”,用整数值1和0表示。如:50的值为“真”,即为1。(a=3)(b=5)由于35不成立,故其值为假,即为0。C语言程序设计与数据结构【例4.1】main()charc=k;inti=1,j=2,k=3;floatx=3e+5,y=0.85;prin

4、tf(%d,%dn,a+5=k+1);printf(%d,%dn,1j5,x-5.25=x+y);printf(%d,%dn,i+j+k=-2*j,k=j=i+5);解析解析:在本例中求出了各种关系运算符的值。字符变量是以它对应的ASCII码参与运算的。对于含多个关系运算符的表达式,如k=j=i+5,根据运算符的左结合性,先计算k=j,该式不成立,其值为0,再计算0=i+5,也不成立,故表达式值为0。C语言程序设计与数据结构4.1.2逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式4.1.2.1 逻辑运算符及其结合性逻辑运算符及其结合性语言中提供了三种逻辑运算符:(1)&逻辑与(2)|逻辑或(3)

5、!逻辑非其中,“&”和“|”为双目运算符,即作用在前、后两个运算对象上,如a&b,a|b。具有“左”结合性。“!”是单目运算符,作用在单个运算对象上,如,!a,具有“右”结合性。三种运算符的优先级由高到低为:!(非)&(与)|(或)逻辑表达式的值是逻辑“真”或逻辑“假”,用“1”或“0”来表示。例如:a&b:当a和b都为“真”时,a&b的运算结果为“真”。a|b:只要a,b中一个为“真”,a|b的结果就为“真”。!a:如果a为“真”,则!a为“假”,如果a为“假”,则!a为“真”。a和b的逻辑运算真值表如表4-1所示。C语言程序设计与数据结构4.1.2.24.1.2.2 逻辑表达式逻辑表达式逻

6、辑表达式的一般形式为:表达式表达式逻辑运算符逻辑运算符表达式表达式其中的表达式可以又是逻辑表达式,从而组成了嵌套的情形。例如:(a&b)&c根据逻辑运算符的左结合性,上式也可写为:a&b&c。逻辑表达式的值是式中各种逻辑运算的最后值,以1和0分别代表真和假。【例4.2】main()charc=k;inti=1,j=2,k=3;floatx=3e+5,y=0.85;printf(%d,%dn,!x*!y,!x);printf(%d,%dn,x|i&j-3,ij&xy);printf(%d,%dn,i=5&c&(j=8),x+y|i+j+k);本例中!x和!y分别为0,!x*!y也为0,故其输出值

7、为0。由于x为非0,故!x的逻辑值为0。对x|i&j-3式,先计算j-3的值为非0,再求i&j-3的逻辑值为1,故x|i&j-3的逻辑值为1。对ij&xy式,由于ij的值为1,而xy为0故表达式的值为1,0相与,最后为0,对i=5&c&(j=8)式,由于i=5为假,即值为0,该表达式由两个与运算组成,所以整个表达式的值为0。对于式x+y|i+j+k由于x+y的值为非0,故整个或表达式的值为1。C语言程序设计与数据结构4.2 4.2 ifif语句语句 用if语句可以构成分支结构。它根据给定的条件进行判断,以决定执行某个分支程序段。语言的if语句有三种基本形式。4.2.1 4.2.1 ifif语句

8、的三种形式语句的三种形式1.第一种形式为基本形式:第一种形式为基本形式:if格式:if(表达式)语句其语义是:如果表达式的值为真,则执行其后的语句,否则不执行该语句。【例4.3】输入两个整数,输出其中的大数。main()inta,b,max;printf(ninputtwonumbers:);scanf(%d%d,&a,&b);max=a;if(maxb)printf(max=%dn,a);elseprintf(max=%dn,b);解析:用if-else语句判别a,b的大小,若a大,则输出a,否则输出b。C语言程序设计与数据结构3.第三种形式为:第三种形式为:if-else-if形式形式前二

9、种形式的if语句一般都用于两个分支的情况。当有多个分支选择时,可采用if-else-if语句,其一般形式为:if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;elseif(表达式m)语句m;else语句n;其语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。如果所有的表达式均为假,则执行语句n。然后继续执行后续程序。C语言程序设计与数据结构【例4.5】#includestdio.hmain()charc;printf(inputacharacter:);c=getchar();if(c=0&c=A&c

10、=a&cb)printf(ABn);elseprintf(AB、Ab)max=a;elsemax=b;可用条件表达式写为:max=(ab)?a:b;执行该语句的语义是:如ab为真,则把a赋予max,否则把b赋予max。使用条件表达式时,还应注意注意以下几点:1)条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。因此max=(ab)?a:b可以去掉括号而写为max=ab?a:b2)条件运算符?和:和:是一对运算符,不能分开单独使用。3)条件运算符的结合方向是自右至左。例如:ab?a:cd?c:d应理解为ab?a:(cd?c:d)这也就是条件表达式嵌套的情形,即其中的表达式3又是一个

11、条件表达式。C语言程序设计与数据结构【例4.8】用条件表达式对上例重新编程,输出两个数中的大数。main()inta,b,max;printf(ninputtwonumbers:);scanf(%d%d,&a,&b);printf(max=%d,ab?a:b);C语言程序设计与数据结构4.34.3switchswitch语句语句 4.3.1 4.3.1 switchswitch语句及执行过程语句及执行过程语言还提供了另一种用于多分支选择的switch语句,其一般形式为:switch(表达式)case常量表达式1:语句1;case常量表达式2:语句2;case常量表达式n:语句n;default

12、:语句n+1;其语义是:计算表达式的值。并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。C语言程序设计与数据结构【例4.9】main()inta;printf(inputintegernumber:);scanf(%d,&a);switch(a)case1:printf(Mondayn);case2:printf(Tuesdayn);case3:printf(Wednesdayn);case4:printf(Thurs

13、dayn);case5:printf(Fridayn);case6:printf(Saturdayn);case7:printf(Sundayn);default:printf(errorn);本程序是要求输入一个数字,输出一个英文单词。但是当输入3之后,却执行了case3以及以后的所有语句,输出了Wednesday及以后的所有单词。这当然是不希望的。为什么会出现这种情况呢?这恰恰反应了switch语句的一个特点。在switch语句中,“case常量表达式”只相当于一个语句标号,表达式的值和某标号相等则转向该标号执行,但不能在执行完该标号的语句后自动跳出整个switch语句,所以出现了继续执行

14、所有后面case语句的情况。这是与前面介绍的if语句完全不同的,应特别注意。为了避免上述情况,语言还提供了一种break语句。C语言程序设计与数据结构4.3.2 4.3.2 breakbreak语句在语句在switchswitch中的使用中的使用语言提供了一种break语句,来跳出switch语句,break语句只有关键字break,没有参数。修改上述例题的程序,在每一case语句之后增加break语句,使每一次执行之后均可跳出switch语句,从而避免输出不应有的结果。【例4.10】main()inta;printf(inputintegernumber:);scanf(%d,&a);swi

15、tch(a)case1:printf(Mondayn);break;case2:printf(Tuesdayn);break;case3:printf(Wednesdayn);break;case4:printf(Thursdayn);break;case5:printf(Fridayn);break;case6:printf(Saturdayn);break;case7:printf(Sundayn);break;default:printf(errorn);在使用switch语句时还应注意以下几点:1)在case后的各常量表达式的值不能相同,否则会出现错误。2)在case后,允许有多个语句,可以不用括起来。3)各case和default子句的先后顺序可以变动,而不会影响程序执行结果。4)default子句可以省略不用。C语言程序设计与数据结构

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com