第四章逻辑沄算和判断选取控制 4.1关系运算符和关系表达式 4.2逻辑运算符和逻辑表达式 4.3逻辑选择型程序设计 4.4选择结构程序设计举例
第四章 逻辑运算和判断选取控制 4.1 关系运算符和关系表达式 4.2 逻辑运算符和逻辑表达式 4.3 逻辑选择型程序设计 4.4 选择结构程序设计举例
第四章逻辑运算和判断选取控制 在上章的例题中,我们能够按照三角形的三条边 长求三角形的面积,也能够根据一元二次方程的系数 求方程的根。但是,如果我们所给定的三角形边长不 能构成三角形,或者给定的一元二次方程没有实根 上章的所学习的简单程序设计显然不能解决上述问题。 我们需要学习新的程序结构判断选取结构(又称 为选择结构)
2 在上章的例题中,我们能够按照三角形的三条边 长求三角形的面积,也能够根据一元二次方程的系数 求方程的根。但是,如果我们所给定的三角形边长不 能构成三角形,或者给定的一元二次方程没有实根, 上章的所学习的简单程序设计显然不能解决上述问题。 我们需要学习新的程序结构——判断选取结构(又称 为选择结构)。 第四章 逻辑运算和判断选取控制
第四章逻辑运算和判断选取控制 在程序设计中,我们经常会遇到对两个数据进行 比较。比如说,在上节的最后例3(求一元二次方程的 根)中,如果我们在计算pqx1,x2的值之前,能够对判 别式dis的值选行判断,对于dis<0的情况进行另外的 处理,就不会出现令人啼笑皆非的结果了。在C程序设 计语言中比较运算是通过关系运算苻实现的。所谓关 系运算实际上就是比较运算,即判断结果是否符合给 定的条件。 3
3 在程序设计中,我们经常会遇到对两个数据进行 比较。比如说,在上节的最后例3(求一元二次方程的 根)中,如果我们在计算p,q,x1,x2的值之前,能够对判 别式disc的值进行判断,对于disc<0的情况进行另外的 处理,就不会出现令人啼笑皆非的结果了。在C程序设 计语言中,比较运算是通过关系运算符实现的。所谓关 系运算实际上就是比较运算,即判断结果是否符合给 定的条件。 第四章 逻辑运算和判断选取控制
4.1关系运算符和表达式 关系运算符 种类 ●结合方向:自左向右 优先级6(高) 优先级别 优先级7(低) 例c>a+b//c>(a+b) b!=c//(a>b)!=c 关系表达两值:焦时“真”或“假”,用 1平∩主 Wg int a=3. b=2. c=1. df: a>b表达式值1 (a>b)==C/表达式值1 b+cb /d=1 f=a>b>c/=0
4 ❖关系运算符 ⚫种类:= > != ⚫结合方向:自左向右 ⚫优先级别: 例 c>a+b //c>(a+b) a>b!=c //(a>b)!=c a==bc //a=(b>c) 1和0表示 例 int a=3,b=2,c=1,d,f; a>b (a>b)==c b+cb f=a>b>c //表达式值1 //表达式值1 //表达式值0 //d=1 //f=0 4.1 关系运算符和表达式 >= == != 优先级6(高) 优先级7(低)
●关系运算注意 例若a=0;b=0.5;x=0.3; 则a2>7>8在C中是允许的, 值为0 例inti=1,j=7a a=i+(94!=0) 则a=2 例‘a>0结果为 A>100结果为0
5 ⚫关系运算注意: 例 若a=0; b=0.5; x=0.3; 则 a2>7>8在C中是允许的, 值为 0 例 int i=1, j=7,a; a=i+(j%4!=0); 则a= 2 例 ‘a’>0 结果为 ‘A’>100 结果为 1 0
关系运算注意: 例应避免对实数作相等或不等的判断 如1.0/3.0*3.0=1.0结果为0 可改写为:fabs(1.0/30*30-1.0)<1e6 例注意区分“=”与“==” int a=0.b=1 f(a b) printf(" a equal to b) else printf( a not equal to b") REturn
6 关系运算注意: 例 注意区分“=”与“= =” int a=0,b=1; if(a=b) printf(“a equal to b”); else printf(“a not equal to b”); 例 应避免对实数作相等或不等的判断 如 1.0/3.0*3.0==1.0 结果为 可改写为:fabs(1.0/3.0*3.0-1.0)<1e-6 0 [Return]
4.2逻辑远算符和表达式 除了关系运算之外,我们还会遇到这样的冋题 若干个开关并联,在何种条件下,电路接通:若干个 开关串联,在何种条件下,电路接通。还有,我们在 数学中会遇到判断0<X<1这样的问题仅用关系运算 符是不能解决这些问题的。这类冋题的解决需要使用 逻辑运算待
7 除了关系运算之外,我们还会遇到这样的问题: 若干个开关并联,在何种条件下,电路接通;若干个 开关串联,在何种条件下,电路接通。还有,我们在 数学中会遇到判断0≤x ≤1这样的问题,仅用关系运算 符是不能解决这些问题的。这类问题的解决需要使用 逻辑运算符。 4.2逻辑运算符和表达式
4.2逻辑远算符和表达式 逻辑远算符 ●种类:!&& ●逻辑运算真值表 a a一假 b a&&ball 真一真 真 假 真一假 真 假 假|真 真一假 假 真 假 真 真 假 假 C语言中,运算量:0表示“假” 非0表示“真” 运算结果:0表示“假” 1表示“真” 8
8 a b !a !b a&&b a||b 真 假 真 假 假 假 真 真 ❖逻辑运算符 ⚫种类: ! && || ⚫逻辑运算真值表 C语言中,运算量: 0表示“假” , 非0表示“真” , 运算结果: 0表示“假” , 1表示“真” , 真 假 假 假 假 假 真 真 假 假 真 真 真 假 真 真 4.2逻辑运算符和表达式
●优先级 局 从右向左 ●结合方向: &&(11 &&:从左向右 2低 :从左向右 例a=x&&xb&&xy /a>b)&&(xy) a= y a=b)(xy) /(a)(a>b) 9
9 ! (2) && (11) || (12) 高 低 例 ab&&x>y a==b||x==y !a||a>b ⚫优先级: ⚫结合方向: ! :从右向左 && :从左向右 || :从左向右 // (ab)&&(x>y) //(a==b)||(x==y) //(!a)||(a>b)
●优先级: 局 从右向左 ●结合方向 &&(11) &&:从左向右 ‖(12) ‖:从左向右 例a=4b=5; a 值为0 a&&b值为1 值为1 alb 值为1 4&&02值为1 >3&&2|83)8828<(4(0))值为1 c&&d值为1 10
10 ! (2) && (11) || (12) 高 低 ⚫优先级: ⚫结合方向: ! :从右向左 && :从左向右 || :从左向右 例 a=4;b=5; !a a&&b a||b !a||b 4&&0||2 5>3&&2||83)&&2||(8<(4-(!0))) 值为1