C语言教程课件第四章选择结构

上传人:m**** 文档编号:571825564 上传时间:2024-08-12 格式:PPT 页数:28 大小:218.50KB
返回 下载 相关 举报
C语言教程课件第四章选择结构_第1页
第1页 / 共28页
C语言教程课件第四章选择结构_第2页
第2页 / 共28页
C语言教程课件第四章选择结构_第3页
第3页 / 共28页
C语言教程课件第四章选择结构_第4页
第4页 / 共28页
C语言教程课件第四章选择结构_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《C语言教程课件第四章选择结构》由会员分享,可在线阅读,更多相关《C语言教程课件第四章选择结构(28页珍藏版)》请在金锄头文库上搜索。

1、C C语言教程课件第四章语言教程课件第四章- -选选择结构择结构4.1 关系运算符和关系表达式关系运算符和关系表达式1.关系运算符及其优先级关系运算符及其优先级, , = 优先级相同高于优先级相同高于 =, !=说明:关系运算符优先级低于算术运算符高于赋值运说明:关系运算符优先级低于算术运算符高于赋值运算符算符2.关系表达式关系表达式用关系运算符将两个表达式连接起来的式子用关系运算符将两个表达式连接起来的式子关系表达式的值是一个逻辑值,即关系表达式的值是一个逻辑值,即“真真”或或“假假”,而,而在在C语言中没有专门的逻辑值,用语言中没有专门的逻辑值,用1代表代表“真真”,用,用0代代表表“假假

2、”4.2 逻辑运算符与逻辑表达式逻辑运算符与逻辑表达式1.逻辑运算符及其优先级逻辑运算符及其优先级! ( 逻辑非逻辑非)高于高于 & (逻辑与逻辑与)高于高于 | (逻辑或逻辑或)优先级:优先级:! 高于算术运算符,关系运算符高于高于算术运算符,关系运算符高于 & 高高于于 |2.逻辑表达式逻辑表达式逻辑表达式的值为逻辑表达式的值为1(真)或(真)或0(假),而在运算过程(假),而在运算过程中任何中任何非零值非零值都认为是都认为是“真真”3.用逻辑表达式表示指定条件用逻辑表达式表示指定条件是否为闰年是否为闰年一个数一个数n是否在是否在-1到到1之间(注意:关系运算符与逻辑之间(注意:关系运算符

3、与逻辑运算符都是运算符都是左结合左结合的)的)一个字符是否是英文字母一个字符是否是英文字母注意:注意:在逻辑表达式的求解中,并不是所有的逻辑运算符都要被执行。(1)a&b&c 只有a为真时,才需要判断b的值,只有a和b都为真时,才需要判断c的值。(2)a|b|c 只要a为真,就不必判断b和c的值,只有a为假,才判断b。a和b都为假才判断c例:执行表达式(m=ab)&(n=cd)后,问各变量的值当a=1,b=2,c=3,d=4,m和n的原值为1时,由于“ab”的值为0,因此m=0,而“n=cd”不被执行,因此n的值不是0而仍保持原值1。4.3 if4.3 if语句语句 1、单分支选择单分支选择i

4、f语句语句 if 语语句句有有三三种种形形式式:单单分分支支选选择择 if 语语句句、双双分分支选择支选择if语句、多分支选择语句、多分支选择 if 语句。语句。 语句形式:语句形式: if (表达式)表达式) 语句;语句; 语句执行流程:语句执行流程: 表达式表达式语句语句真真(非非0)假假(0)4.3.1 if4.3.1 if语句的三种形式语句的三种形式说明:说明: 表达式必须用括号括起来,尾部一般不表达式必须用括号括起来,尾部一般不加分号而且其可以为各种类型的表达式,加分号而且其可以为各种类型的表达式,一般为关系表达式或逻辑表达式,其值为一般为关系表达式或逻辑表达式,其值为真或假,但也可

5、以是其他表达式,只要值真或假,但也可以是其他表达式,只要值为非为非0 0即为真,否则为假。即为真,否则为假。if(E)if(E)等价于等价于 if(E!=0)if(E!=0)if(!E) if(!E) 等价于等价于 if(E=0)if(E=0)if(E1=E2) if(E1=E2) 与与 if(E1=E2)if(E1=E2)的区别的区别注意:注意: (1 1)ifif语句自动结合一个语句,当满足条件需要语句自动结合一个语句,当满足条件需要执行多个语句时,应用一对大括号执行多个语句时,应用一对大括号 将需要执行将需要执行的多个语句括起,形成一个复合语句。的多个语句括起,形成一个复合语句。 (2

6、2)ifif语句中表达式形式很灵活,可以是常量、语句中表达式形式很灵活,可以是常量、变量、任何类型表达式、函数、指针等。只要表达变量、任何类型表达式、函数、指针等。只要表达式的值为非零值,条件就为真,反之条件为假。式的值为非零值,条件就为真,反之条件为假。 2、双分支选择双分支选择if语句语句语句形式:语句形式:if (表达式)表达式) 语句语句1;else 语句语句2 ; 语句执行流程:语句执行流程: 表达式表达式语句语句1真真(非非0)假假(0)语句语句2 if和和else语语句句之之间间只只能能有有一一个个语语句句,当当ifelse之之间的语句不只一句时,应用一对间的语句不只一句时,应用

7、一对将语句括起。将语句括起。 if(ab) a+;b+;else a=0;b=10; 注意注意: : 3、多分支选择多分支选择if语句语句语句形式:语句形式:if (表达式表达式1) 语句语句1;else if (表达式表达式2)语句)语句2; else if (表达式表达式n)语句语句n; else 语句语句n+1;语句执行流程:语句执行流程: 表达式表达式1 1语句语句1真真(非非0)假假(0)语句语句2表达式表达式2 2真真(非非0)表达式表达式2 2语句语句n语句语句n+1假假(0)假假(0)语句含义语句含义:语句形式:语句形式: 当当ifif语句中又包含若干个语句中又包含若干个ifi

8、f语句时,则构成了语句时,则构成了ifif语句嵌套的情形。语句嵌套的情形。4.3.2 4.3.2 if语句的嵌套语句的嵌套if ( 表达式表达式1) if ( 表达式表达式2) 语句语句1; if ( 表达式表达式1) if ( 表达式表达式2) 语句语句1; else 语句语句2;注意注意: 当当if语句中出现多个语句中出现多个“if”与与“else”的时候,的时候,要特别注意它们之间的匹配关系,否则就可能导致要特别注意它们之间的匹配关系,否则就可能导致程序逻辑错误。程序逻辑错误。 “else”else”与与“if”if”的的匹匹配配原原则则是是“就就近近一一致致原原 则则 ”, 即即 “e

9、lse”else”总总 是是 与与 它它 前前 面面 最最 近近 的的“if”if”相匹配。相匹配。例 有一个函数,编一程序,输入一个x值,输出y值。上例中的程序段有四个,请判断哪个是正确的?程序1: if(x=0) if(x0) y=1; else y=0;else y=-1; 程序3: y=-1; if(x!=0) if(x0) y=1;else y=0; 程序4: y=0; if(x=0) if(x0) y=1; else y=-1; 4.4 条件运算符条件运算符格式:表达式?表达式表达式 功能:先求解表达式,若为非(真)则求解表达式,此时表达式的值就作为整个条件表达式的值。若表达式的值

10、为(假),则求解表达式,表达式的值就是整个条件表达式的值使用场合:若在if语句中,当被判别的表达式的值为“真”或“假” 时,都执行一个赋值语句且向同一个变量赋值时,可以用一个条件运算符来处理。 说明:1.条件运算符优先级高于赋值运算符 ,低于关系运算符和算术运算符。 2.条件运算符的结合方向为“自右至左”。 3.“表达式2”和“表达式3”不仅可以是数值表达式,还可以是赋值表达式或函数表达式。4.条件表达式中,表达式的类型可以与表达式和表达式的类型不同。 例: if (ab) max=a; else max=b;当ab时将a的值赋给max,当ab时将b的值赋给max,可以看到无论ab是否满足,都

11、是向同一个变量赋值,可以用下面的条件运算符来处理: max=(ab)?a:b;4.5 switch4.5 switch语句语句1、语句形式:、语句形式: switch(表达式表达式) case 常量常量1: 语句语句1; case 常量常量2: 语句语句2; case 常量常量3: 语句语句3; . case 常量常量n: 语句语句n; default : 语句语句n+1; 根据表达式的不同值,根据表达式的不同值,根据表达式的不同值,根据表达式的不同值,选择不同的程序分支,选择不同的程序分支,选择不同的程序分支,选择不同的程序分支,又称开关语句又称开关语句又称开关语句又称开关语句。数值型数值型

12、或或字符型字符型常量表达式的值必须常量表达式的值必须互不相同,否则执行互不相同,否则执行时将出现矛盾,即同时将出现矛盾,即同一个开关值,将对应一个开关值,将对应多种执行方案。多种执行方案。千万不能千万不能接接(;)号号2、语句执行流程:、语句执行流程:指语句的最指语句的最后一条是否后一条是否为为break简单语句或简单语句或复合语句复合语句breakbreakbreakbreak有有无breakbreak有无有计算表达式计算表达式常量常量1 1常量常量2 2常量常量n n=语句语句1 1=语句语句2 2语句语句n n其它其它=语句语句n+1n+1无值值例例 假假设设用用0 0、1 1、2.62

13、.6分分别别表表示示星星期期日日、星星期期一一.星星期期六六。现现输输入入一一个个数数字字,输输出出对对应应的的星星期期几几的的英文单词。如果输入英文单词。如果输入3 3,输出,输出“Wednesday”Wednesday”。 程序运行情况如下:程序运行情况如下:3Wednesday ThursdayFridaySaturdayerror#include stdio.hvoid main() int n; scanf(%d,&n); switch(n) case 0: printf(Sundayn); case 1: printf(Mondayn); case 2: printf(Tuesda

14、yn); case 3: printf(Wednesdayn); case 4: printf(Thursdayn); case 5: printf(Fridayn); case 6: printf(Saturdayn); default: printf(Error); 在在“switch”switch”语句中,语句中,“case case 常量表达式常量表达式”只相当于一个语句标号,表达式的值和某标号相只相当于一个语句标号,表达式的值和某标号相等则转向该标号执行,但不能在执行完该标号的等则转向该标号执行,但不能在执行完该标号的语句后自动跳出整个语句后自动跳出整个switch switch 语

15、句,因此会继续执语句,因此会继续执行所有后面语句的情况。行所有后面语句的情况。 为此,语言提供了一种为此,语言提供了一种breakbreak语句,其功语句,其功能是可以跳出它所在的能是可以跳出它所在的switchswitch语句。语句。将上例将上例4 4修改如下:修改如下:#include stdio.hvoid main() int n; scanf(%d,&n); switch(n) case 0: printf(Sundayn); break;case 1: printf(Mondayn); break;case 2: printf(Tuesdayn); break;case 3: pr

16、intf(Wednesdayn); break;case 4: printf(Thursdayn); break;case 5: printf(Fridayn); break;case 6: printf(Saturdayn); break;default: printf(Error);程序运行情况如下:程序运行情况如下:33Wednesday Wednesday 3、说明、说明多个多个casecase语句可以共用一组执行语句。语句可以共用一组执行语句。 switch(grade) case A: case B: case C:printf(grade=60n);break; default:

17、printf(grade60);各各casecase和和defaultdefault子句的先后顺序可以变动,而子句的先后顺序可以变动,而不会影响程序执行结果。不会影响程序执行结果。 defaultdefault语句可以省略不用。语句可以省略不用。casecase与其后面的常量表达式间至少有一个与其后面的常量表达式间至少有一个空格。空格。switchswitch语句可以嵌套,语句可以嵌套,breakbreak语句只跳出语句只跳出它所在的它所在的switchswitch语句。语句。 例例 企企业业发发放放的的奖奖金金根根据据利利润润提提成成。从从键键盘盘输输入入当当月利润,求应发放奖金总数?月利润

18、,求应发放奖金总数? 利润xx=1010x2020x4040x6060x100100x (int )x/10 常量常量0,11,22,3,44,5,66,7,8,9,1010以上用这种方法转换后,用这种方法转换后,n n出现了在不同区域有重复数字出现了在不同区域有重复数字的情况。解决的方法有很多,其中一种是可以采用的情况。解决的方法有很多,其中一种是可以采用当当x x为为1010的整数倍时,将计算出的的整数倍时,将计算出的n n值减值减1 1。 使用使用switchswitch解题的关键,解题的关键,通过分析找通过分析找到表达式,到表达式,将问题分成将问题分成几种情况。几种情况。1. 写出下面

19、程序的运行结果写出下面程序的运行结果main() int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0: a+;break; case 1:b+;break; case 2: a+;b+;break; case 3:a+;b+; printf(“a=%d,b=%dn”,a,b); 结果结果:a=2,b=12.程序填空程序填空: 以下程序判断输入的整数能以下程序判断输入的整数能否被否被3或或7整除整除.main() int x,f=0; scanf( “%d”,&x ); if( 1 ) ( 2 ) if(f=1) printf(“YESn”); else printf(“NOn”);1 x%3=0 | x%7=02 f=1;结束!结束!

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号