1、第四讲 第五章 逻辑运算和判断选取控制内容:5.1 关系运算符和关系表达式5.2 逻辑运算符和逻辑表达式5.3 if语句5.1 关系运算符和关系表达式在程序设计中,我们经常会遇到对两个数据进行比较.比如说,在上节的最后例 3.12 中,如果我们在计算三角形的面积之前,能够对判别式 disc 的值进行判断,对于 disc = = !=小于 大于 小于等于 大于等于 等于 不等于2. 关系运算符的优先次序:、= =、!=高 低3. 关系运算符与其它运算符的优先次序:关系运算符的优先等级低于算术运算符,高于赋值运算符。二、关系表达式1. 关系表达式:用关系运算符将两个表达式(算术、关系、逻辑、赋值表
2、达式均可)连起来的式子叫关系表达式。2. 关系表达式的取值: 关系表达式的值是一个逻辑值,即“真“或“假“,条件成立取值为“真“,以“1“代表“真“;条件不成立,取值为“假“,以“0“代表“假“。5.2 逻辑运算符和逻辑表达式除了关系运算之外,我们还会遇到这样的问题:若干个开关并联,在何种条件下,电路接通;若干个开关串联,在何种条件下,电路接通.这类问题就是我们上个学期讲过的逻辑运算问题。一、逻辑运算符1. 逻辑运算符: |(或)和 /* 此处的花括号去掉,会出错: “else Misplace in main function“*/* main 函数中的 else 放错位置 */printf
3、(“%f %fn“,a,b); elseprintf(“na=%f b=%f n“,a,b);printf(“%f %fn“,b,a);运行时,输入 a,b 的值为 1 和 6,结果如下:a=1.000000 b=6.0000006.000000 1.000000再次运行,输入 a,b 的值为-56.9 和 45.2,结果如下:a=-56.900002 b=45.20000145.200001 -56.900002请注意第二次运行时的结果不精确,这是因为 Turbo C 的单精度数只提供 7位有效数字,第 8 位以后的输出不能保证精度。三、if 语句的嵌套在 if 语句中又包含一个或多个 if
4、 语句,称为 if 语句的嵌套。1. 一般形式: if ()if () 语句 1else 语句 2elseif () 语句 3else 语句 42. 注意事项(1) 注意 if 与 else 的配对关系,从最内层开始,else 总是与它上面最近的且尚未配对的 if 配对。(2) 在书写的时候,具有配对关系的 if 和 else 的物理位置最好对应,以便检查和分析程序,但书写的位置关系并不影响它们的配对关系。(3) 如果 if 和 else 数量不同(如某个内嵌的 if 结构只有 if 而没有 else),应用花括号“将该 if 结构括起来,以确定配对关系。请看如下程序: -1 (x=0)if
5、(x0) y=1;else y=0;else y=-1;printf(“x=%d,y=%dn“,x,y);main () /* 教材 P55 程序 3 结果不对,应在内嵌 if 语句中加入如本程序 */int x,y;scanf(“%d“,y=-1;if (x!=0)if (x0) y=1; /* 此行应有一对花括号,改变配对关系,否则结果不正确 */else y=0;printf(“x=%d,y=%dn“,x,y);main () /* 教材 P55 程序 4 结果不对,应在内嵌 if 语句中加入如本程序 */int x,y;scanf(“%d“,y=0;if (x=0)if (x0) y=
6、1; /* 此行应有一对花括号,否则结果不正确 */else y=-1;printf(“x=%d,y=%dn“,x,y);三、条件运算符在 if 语句中又包含一个或多个 if 语句,称为 if 语句的嵌套。1. 条件运算符(三目): ? :2. 条件运算符的结合性: 自右向左3. 条件运算符的优先等级: 高于赋值和逗号运算符,比其它运算符都低4. 条件表达式: 表达式 1?表达式 2:表达式 3条件表达式的执行及条件表达式的值:先计算表达式 1 之值,若条件表达式的值非 0(条件成立),计算表达式 2 之值并将该值作为条件表达式之值;若表达式 1 的值为 0(条件不成立),计算表达式 3 之值将表达式 3 之值作为整个条件表达式的值。请看下面的程序/* 输入一个字符,若为大写,转换成小写;若为小写,不变 */main ()char ch ;scanf(“%c“,ch=(ch=A /* 一个大写字母的 ASCII 码值加 32 就变成了相应的小写字母的 ASCII 码值,可查阅教材后面的附录 */printf (“%cn“,ch);