资源描述:
《[理学]c_program》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第五章选择结构程序设计主要内容5.1关系运算符和关系表达式5.2逻辑运算符和逻辑表达式5.3if语句5.4switch语句5.5程序举例要点:关系表达式逻辑表达式选择结构程序设计5.1关系运算符和关系表达式“关系运算”实际上是”比较运算”5.1.1关系运算符及其优先次序C语言提供6种关系运算符(参见P365)<(小于)<=(小于或等于)>(大于)>=(大于或等于)==(等于)!=(不等于)优先级相同(高)优先级相同(低)说明:关系运算符的优先级低于算术运算符关系运算符的优先级高于赋值运算符5.1.2关系表达式用关系运算符将两个表达式(可以是算术表达式或关系表达式,逻辑表达式,
2、赋值表达式,字符表达式)连接起来的式子,称关系表达式例:a>ba+b>b+c(a=3)>(b=5)’a’<‘b’(a>b)>(bb”的值为“真”,表达式的值为1关系表达式“(a>b)==c”的值为真,表达式的值为1关系表达式“b+cb相当于d=(a>b)表达式的值为1f=a>b>c相当于f=(a>b>c)表达式的值为0注意理解5.2逻辑运算符和逻辑表
3、达式5.2.1逻辑运算符及其优先次序C语言提供3种逻辑运算符(1)&&(逻辑与)相当于其他语言中的AND(2)
4、
5、(逻辑或)相当于其他语言中的OR(3)!(逻辑非)相当于其他语言中的NOT例:a&&b若a,b为真,则a&&b为真。a
6、
7、b若a,b之一为真,则a
8、
9、b为真。!a若a为真,则!a为假。优先次序:!(非)->&&(与)->
10、
11、(或)逻辑运算符中的“&&”和“
12、
13、”低于关系运算符“!”高于算术运算符举例例2:数学表达式55例3:数学表达式x<=5或x>=10如何表示?X>=10x<=5真值表:当a和b的值为不同组合时,各种逻辑运算所得到
14、的值ab!a!ba&&ba
15、
16、b真假真假假假真真真假假假假假真真假假真真真假真真&&
17、
18、5.2.2逻辑表达式逻辑表达式用逻辑运算符将关系表达式或逻辑量连接起来的式子逻辑表达式的值应该是一个逻辑量“真”或“假”例:设a=4,b=5:!a的值为0a&&b的值为1a
19、
20、b的值为1!a
21、
22、b的值为14&&0
23、
24、2的值为1关于真与假的规定运算量:0表示“假”,非0表示“真”运算结果:0表示“假”1表示“真”charc=‘b’;inti=3,j=3;doublex=0.0;表达式等价表达式值x
25、
26、i&&j-3‘a’<=c&&c<=‘z’x
27、
28、(i&&(j-3))0(‘a’<=c)&&(c
29、<=‘z’)1例逻辑运算实例在逻辑表达式的求解中,并不是所有的逻辑运算符都要被执行。a&&b&&c只有a为真时,才需要判断b的值,只有a和b都为真时,才需要判断c的值。(2)a
30、
31、b
32、
33、c只要a为真,就不必判断b和c的值,只有a为假,才判断b。a和b都为假才判断c例:(m=a>b)&&(n=c>d)当a=1,b=2,c=3,d=4,m和n的原值为1时,由于“a>b”的值为0,因此m=0,而“n=c>d”不被执行,因此n的值不是0而仍保持原值1。切记!表达式=0x=2,y=0,z=1逻辑表达式求值中的特殊性:在逻辑表达式的求值过程中,按其操作数从左至右的计算顺序,当某个操作数的
34、值可以确定整个逻辑表达式的值时,其余的操作数不再计算x=y=z=1;++x&&--y&&++z;--x
35、
36、++y
37、
38、++z;表达式=1x=1,y=0,z=1x=y=z=1;--x&&++y
39、
40、++z++x
41、
42、--y&&--z表达式=1x=0,y=1,z=2表达式=1x=1,y=1,z=2x
43、
44、--y&&--zx
45、
46、y&&--z表达式=0x=0,y=0,z=2表达式=1x=0,y=1,z=15.3if语句5.3.1if语句的三种基本形式(1)if(表达式)语句例:if(x>y)printf(“%d”,x);执行过程:表达式语句真(非0)假(0)表达式语句真(非0)假(0)(2)
47、if(表达式)语句1else语句2例:if(x>y)printf(“%d”,x);elseprintf(“%d”,y);执行过程:表达式语句1语句2YN有分号!(3)if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3……elseif(表达式m)语句melse语句n执行过程:注意:if后面的表达式类型可以是逻辑表达式或关系表达式,也可是任意的数值类型(包括整型、实型、字符型等)例如:试写出下列语句的输出结果if(3)printf(“OK”);if(‘a’)printf(“%