内容正文:
第4章 选择结构
问题的提 出:
求一元二次方程的根
ax2+bx+c=0(a≠0)
当△>=0时,为实根
当△<0时,为虚根
图 1.4 选择结构
△>=0
真
假
求实根
求虚根
考虑两个问题:
在C语言中如何表示判断条件?
答案:用任意合法的表达式,一般用关系表达式和逻辑表达式。
怎么实现分支结构?
答案:用if语句和switch语句。
图 1.4 选择结构
P
真
假
A
B
第4章 选择结构
4.1 关系运算
4.2 逻辑运算
4.3 if语句
4.4 switch语句
本章小结
巩固练习
本章要点
图 1.4 选择结构
P
真
假
A
B
“关系运算”就是“比较运算”。
关系运算的结果
如果符合或满足给定的条件,则结果为逻辑值“真”;
如果不符合或不满足给定的条件,则结果为逻辑值“假”。
例如,x>0
4.1 关系运算
图 1.4 选择结构
X>0
真
假
A
B
4.1.1 关系运算符
运算符 名称 示例 优先级 结合性
< 小于 x<0 相同(高) 左结合型
<= 小于等于 x<=0
> 大于 x>0
>= 大于等于 x>=0
= = 等于 x==0 相同(低)
!= 不等于 x!=0
例如:c>a+b
a==b<c
a=b>c
关系运算符的优先级低于算术运算符,高于赋值运算符。
c>(a+b)
a==(b<c)
a=(b>c)
4.1.2 关系表达式
格式:
表达式 关系运算符 表达式
其中的〈表达式〉可以是任意合法的表达式,但其类型应相同.
如:a>=b (a=3)>(b=4) a>c==c
关系表达式的值为逻辑值
0(假)
1(真)
【例4.1】关系运算符示例。
/* 关系运算符示例 */
#include “stdio.h”
main()
{
char c='b';
int i=1,j=2,k=3;
printf("%d,",'a'+1<c);
printf("%d",1<j<5);
printf("%d
",k==j==i+5);
}
① 应避免对实数作相等或不等的判断。
② 注意从写法和含义上区分赋值运算符“=”与相等关系运算符“==”。
③ 对于形如“10<=x<=20” 的关系表达式,从语法上来说C语言是允许的,但是在程序设计时它并不能正确地表示用户的意图。
应写为:x>=10 && x<=20
注 意
4.2 逻辑运算
双目:逻辑与 (&&) ; 逻辑或 (||)
单目:逻辑非 (!)
优先级(由高到低):
!,算术,关系,&&,||,赋值
结合性:从左到右
逻辑运算真值表
4.2.1 逻辑运算符
a b a&&b a||b !a !b
真 真 真 真 假 假
真 假 假 真 假 真
假 真 假 真 真 假
假 假 假 假 真 真
C编译系统以“1”代表“真”,“0 ”代表“假”。
判断一个量为“真”还是“假”时,以数值“0”代表“假”,以“非0”的数值作为“真”。
如:5&&2
!5||0
逻辑真值表
4.2.2 逻辑运算的值
a b a&&b a||b !a !b
非0 非0 1 1 0 0
非0 0 0 1 0 1
0 非0 0 1 1 0
0 0 0 0 1 1
格式:
表达式 逻辑运算符 表达式
例如: x>10 && x<20
4&&0||(a=2)
‘c’ &&’d’
逻辑表达式的值只能是0或1。参与逻辑运算的运算对象可以是任意类型的表达式。
当参与运算的表达式是逻辑表达式时,形成逻辑表达式的嵌套情形。例如:a&&b&&c
4.2.3 逻辑表达式
【例4.2】逻辑运算示例
/* 逻辑运算示例 */
#include “stdio.h”
main()
{
char c='b';
int i=1,j=2,k=3;
printf("%d,",!i*!j);
printf("%d,",i<j&&’a’<c);
printf("%d
",i==5&&c&&(j=8));
}
(1)C语言中没有逻辑型数据类型。
(2)整型、字符型、 逻辑型通用。
(3)在求逻辑表达式的值时,右边部分是根据左边部分的值有条件地执行。
例如逻辑表达式: a&&b
在求其值时有以下几种情况:
当a为真时,才判别b的值;
当a