资源描述:
《第四章 逻辑运算和判断选取控制》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第四章逻辑运算和判断选取控制关系运算符和关系表达式逻辑运算符和逻辑表达式If语句Switch语句程序举例§4.1关系运算符和关系表达式关系运算是比较运算,其结果是逻辑值“真”或“假”。关系运算符有6种:<、<=、>、>=:优先级为6级==、!=:优先级为7级结合性为从左到右优先级高者,运算次序优先关系运算符和其它运算符优先级的比较:高算术运算符:*、/、%(3)+、-(4)关系运算符:<、<=、>、>=(6)==、!=(7)逻辑运算符:!(2)&&(11)
2、
3、(12)低赋值运算符:=、+=、-=、*=、/=、%=(14)由于存在优先级,因此下面表达式是等价的
4、:a>(a+b)a>a+b(a>b)!=ca>b!=c关系表达式a==(bc)a=b>c赋值表达式4.1.2关系表达式关系表达式:用关系运算符将两个表达式(算术、关系、逻辑、赋值、字符)连接起来的式子。如:a>ba+b>b+c(a=3)>(b=5)‘a’<‘b’(a>b)>(cb真a>b==c真b+cbd的为1f=a>b>cf值为0§4.2逻辑运算符和逻辑表达式逻辑表达式:用逻辑运算符将关系表达式或逻辑量连接起
5、来的式子。4.2.1逻辑运算符及其优先次序在c语言中,逻辑运算符有:1.逻辑与:&&优先级112.逻辑或:
6、
7、优先级123.逻辑非:!优先级2结合性,从右向左,单目有如下逻辑表达式:a&&b当a,b都为真时,结果为真,否则结果为假a
8、
9、b当a,b都为假时,结果为假,否则结果为真!a当a为真时,结果为假,当a为假时,结果为真。在一个逻辑表达式中,若包含多个逻辑运算符,则运算顺序按运算符优先级的高低进行。如:!a&&b
10、
11、x>y&&c①③②④⑤结合性,从左到右,双目4.2.2逻辑表达式在逻辑表达式中参加运算的数据可以是常量、变量、表达式,非0值为真,0值为假,逻
12、辑表达式的值是逻辑量,1为真,0为假。例:T4-0-1.cmain(){inta=-5,i,j,k,l,m;floatb=0.01;i=!a;j=a&&b;k=a
13、
14、b;l=(5>3&&2
15、
16、8<4-!0);m=‘a’<‘b’&&‘5’>‘9’;printf(“i=%d,j=%d,k=%d,l=%d,m=%d”,i,j,k,l,m);}运行结果:i=0,j=1,k=1,l=1,m=0参与逻辑运算的值非0值为真,0值为假逻辑表达式运算的结果值,1为真,0为假1.逻辑与运算符:&&如有逻辑表达式:a&&b&&c执行过程是:当a为0时,b和c不用再判断了,逻辑
17、与运算符将不再执行,结果为0,否则还要继续后边的运算。0(假)0(假)1(真)0(假)非0(真)非0(真)非0(真)abc2.逻辑或运算符:
18、
19、如有逻辑表达式:a
20、
21、b
22、
23、c执行过程是:当a为非0时,b和c不用再判断了,逻辑或运算符将不再执行,其结果为1,否则继续执行后面的运算。在逻辑表达式求解过程中,所有逻辑运算符并不都被执行。只有在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。非0(真)0(假)0(假)非0(真)1(真)0(假)abc0(假)例:T4-0-2.cmain(){inta,b=0,c=0,d=0;scanf(“%d”,&a);
24、d=a&&(b=5)&&(c=3);printf(“a=%d,b=%d,c=%d,d=%d”,a,b,c,d);}例T4-0-3.cmain(){inta,b=0,c=0,d=0;scanf(“%d”,&a);d=a
25、
26、(b=5)
27、
28、(c=3);printf(“a=%d,b=%d,c=%d,d=%d,”,a,b,c,d);}输入:10输出:a=1,b=5,c=3,d=1a=0,b=0,c=0,d=0输入:10输出:a=1,b=0,c=0,d=1a=0,b=5,c=0,d=1a为1时,表达式的值无法马上确定接着计算与符号后下一个表达式,所以b、
29、c变量的值被改变a为0时,表达式的值可马上确定为0,所以b、c变量的值没有改变由&&运算符性质限定的在C语言中,巧妙地使用逻辑表达式,可以表示一个复杂的问题如:关于闰年问题:符合下列条件之一,均为闰年。(1)能被4整除并且不能被100整除(2)能被4整除并且能被400整除其逻辑表达式为:(year%4==0&&year%100!=0)
30、
31、(year%400==0&&year%4==0)由于能被400整除的年份一定能被4整除,所以可省去后一部分,即:(year%4==0&&year%100!=0)
32、
33、(year%400==0)若判断非闰年,只在闰年表达式前加!
34、即:!(year%4==0&&year%100!=0