选择结构程序设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
假 表达式1
真
假 表达式2
真
假 表达式3
真
语句1 语句2 语句3
语句4
例如:
if (number>500) cost=0.15;
else if(number>300) cost=0.10;
else if(number>100) cost=0.075;
else if(number>50) cost=0.05;
第5章 选择结构程序设计
§5.1 关系运算符和关系表达式 §5.2 逻辑运算符和逻辑表达式 §5.3 if语句 §5.4 switch语句 §5.5 程序举例
§5.1 关系运算符和关系表达式
一 关系运算的概念一
“关系运算”就是“比较运算”。即:将两个值 进行比
较,判断其比较的结果是否符合给定的条件,如符合, 则关系表达式的值为“真”,反之,则为“假”。
例如:a>3 当a=5,则满足给定的条件“a>3”,则表达式的
值
为“真”; 当a=2,则不满足给定的条件“a>3”,则表达式
的
二 关系运算符及其优先次序
⒈ 关系运算符
C语言提供6种关系运算符:
< <= > >= (优先级高)
== !=
(优先级低)
⒉ 优先次序
⑴ 前四种关系运算符的优先级相同,后两种也相同。 前四种高于后两种。 ⑵ 关系运算符的优先级低于算术运算符。 ⑶ 关系运算符的优先级高于赋值运算符。
一 逻辑运算符及其优先次序
⒈ 逻辑运算符
C语言提供三种逻辑运算符: ⑴ && (逻辑与) ⑵ || (逻辑或) ⑶ ! (逻辑非) 几点说明: ⑴ “&&”和“||”是“双目(元)运算符”,它要求有两
个运算量(操作数)。
例如:
(a>b)&&(x>y)
(a>b)||(x>y) ⑵ “!是”“一目(元)运算符”,只要求有一个运算量。
在
C中,给出逻辑运算结果时,以数值“ 1”代表“真”,
以
数值“ 0”代表“假”。但是在判断一个量是否为“真”
时
,
例如: ※ 若a=4,则!a的值为0。 ※ 若a=4,b=5,则a&&b的值为1。 ※ a=4,b=5,则!a||b的值为1。 ※ 4&&0||2的值为1。
⒊ 如果一个表达式中不同位置上出现数值,应 区分哪些是作为数值运算或关系运算的对象, 哪些作为逻辑运算的对象。
⑴ a&&b&&c 对&&运算符来说,只有a≠0,才继续右面 的运算。 ⑵ a||b||c 对||运算符来说,只有a=0,才继续右面 的运算。 例如:a=1 b=2 c=3 d=4 m=n=1
(m=a>b)&&(n=c>d) 结果:m=0 n=1
§5.3 if语句
if语句是用来判定所给定的条件是否满足,根据判 定的结果(真或假)决定执行பைடு நூலகம்出的两种操作之一。
例如: a>b&&x>y 等价于
(a>b)&&(x>y)
!(非) 算术运算符 关系运算符
(高)
a==b||x==y !a||a>b
&&
||
赋值运算符
(低)
二 逻辑表达式
⒈ 定义
用逻辑运算符将关系表达式或逻辑量连接起来的式 子。 例如:a>b&&x>y
a==b||x==y
⒉ 逻辑表达式的值
逻辑表达式的值应该是一个逻辑量“真”或“假”。
例如:5>3&&8<4-!0
⒋ 逻辑运算符两侧的运算对象不但可以是 0和1, 或者是 0和非0的整数,也可以是任何类型的数据 (字符型、实型、指针类型等)。系统最终以 0 和非 0来判断它们属于“真”或“假”。
例如:‘c?&&?d? 的值为1
⒌ 逻辑运算真值表见表 5.2(p90)
⒍ 在逻辑表达式的求解中,并不是所有的逻辑 运算符都被执行,只是在必须执行下一个逻辑运 算才能求出表达式的解时,才执行该运算符。
else
cost=0;
几点说明:
⑴ if语句中的“表达式”,一般为逻辑表达式或关系
表达式。除此之外,表达式的类型还可以是任意的数 值类型(包括整型、实型、字符型、指针型数据)。
例如:if(a==b&&x==y) printf(“a=b,x=y”); if(x>y) printf(“%d”,x);
if(3) printf(“ok”); if(?a?) printf(“%d”,?a?);
例如:
!(a>b)
⑶ 逻辑运算举例(逻辑运算的真值表见p89表5.1)
例如:
a&&b 若a、b都为真,则a&&b 为真。
a||b 若a、b之一为真,则a||b 为真。
!a
若a为真,则!a为假。
2. 逻辑运算符的优先次序
⑴ !(非) && (与) || (或) (“!”的优先级最高)
⑵ 逻辑运算符中的“&&”和“||”低于关系运算符, “!”高于算术运算符。
一 if语句的三种形式
⒈ if(表达式) 语句
例如:if(x>y) printf(“%d”,x);
假 表达式
真 语句
2. if(表达式) 语句1 else 语句2
例如:
if(x>y) printf(“%d”,x);
else printf(“%d”,y);
真 表达式 假
语句1
语句2
3. if(表达式1) 语句1 else if(表达式2) 语句2 else if(表达式3) 语句3 … else if(表达式m) 语句m else 语句n
算术运算符 关系运算符 赋值运算符
(高) (低)
例如: c>a+b 等效于 c>(a+b) a>b==c a=b>c
三 关系表达式
⒈ 定义: 用关系运算符将两个表达式(可以是算术
表达式、关系表达式、逻辑表达式、赋值表达式、字 符表达式)连接起来的式子。 例如:
a>b , a+b>b+c , (a=3)<(b=5) , ?a?<?b? , (a>b) >(b<c)
⑵ 第二、第三种形式的if语句中,在每个else前面有一 个分号,整个语句结束处有一个分号。else子句不能作 为语句单独使用,它必须是if语句的一部分,与if配对 使用。
⑶ 在if和else后面可以只含一个内嵌的操作语句,也可 以有多个操作语句,此时用“{}”将几个语句括起来成 为一个复合语句。“{}”外不需加分号。
⒉ 表达式的值: 关系表达式的值是一个逻辑值,即:
“真”或“假”,在C中,用“1”代表“真”,“0”代 表假。
例如:a=3,b=2,c=1
“a>b的”值为“真”,即:关系表达式的值为 “1”。
“b+c<a”的值为“假”,即:关系表达式的值 为“0”。
d=a>b
d=?
f=a>b>c
f=?
§5.2 逻辑运算符和逻辑表达式