当前位置:文档之家› c4第四章选择结构程序设计

c4第四章选择结构程序设计

则a= 2
例 'a'>0 结果为 1 'A'>100 结果为 0
整理ppt
5
关系运算注意:
1. 避免对实数作相等或不等的判断 如 1.0/0.00001*0.00001==1.0;结果为 0 一般而言,对于实型量 a,b作相等或不等的判
断应当用: fabs(a-b)<1e-6
2. 注意区分 = 与 ==
断应当用: fabs(a-b)<1e-6
2. 注意区分 = 与 ==
0
main(){
int a=0,b=1;
1
printf("%d\n",a==b);
printf("%d\n",a=b);
getch();
}
整理ppt
7
关系运算注意:
1. 避免对实数作相等或不等的判断 如 1.0/0.00001*0.00001==1.0;结果为 0 一般而言,对于实型量 a,b作相等或不等的判
例如,在逻辑表达式 1 && 5 || 0 && 6中, 0 && 6没有运行, 因为对于 || 运算,只要有一个操作数是1,结果就是1。
断应当用: fabs(a-b)<1e-6
2. 注意区分 = 与 ==
0
main(){
int a=0,b=1;
1
printf("%d\n",a==b);
printf("%d\n",a=b);
getch();
}
整理ppt
8
补充知识:
计算机中的实型量又称为浮点数。浮点数的定义决定了 它的绝对精度会随其量级而变化。所以,比较两个浮点 数的最好方法就要利用一个与浮点数量级相关的精确阈 值。
















C语言中,逻辑量的值: 0表示“假”,非0表示“真”,
C语言中,逻辑表达式的结果: 0表示“假”,1表示 “真”,
&&(与运算)就是求交集的运算
||(或运算)就是求并集的运算
整理ppt
11
优先级:
! (2) 高 && (11) || (12) 低
结合方向: ! :从右向左
第四章
选择结构程序设计
整理ppt
1
教学目的: 掌握选择结构的形式,掌握典型算法。
教学要求: 掌握关系表达式和逻辑表达式以及在选择结 构中的使用。学会把现实问题通过表达式的 形式表示。
整理ppt
2
• 关系运算符和关系表达式
Relational Operators and Expressions
if(fabs(a-b)/max(fabs(a)-fabs(b))<=TOLERANCE)
整理ppt
9
(补充)从数学而言,当y是正时,x+y>x等价于 y>0,它们的逻辑结果都是true。但从计算机而言, 当x与y的绝对值相差很大时,这个值就有可能是
false
#include <stdio.h>
main()
{ double x=1e20,y=10;
printf("%d", x+y>x);
getch(); }
/* 输出是0 */
整理ppt
10
– 逻辑运算符和以逻辑运算符组成的逻辑表达式
逻辑运算符 – 种类: && | | ! ( 与 或 非 ) – 逻辑运算真值表
a
b








!a
!b a&&b a||b
例如:对于 float a,b; 不要用 if(a==b) 进行比较, 而要用 if(fabs(a-b)<=epsilon*fabs(a)) 进行比较,
(其中要确保a不会为0)epsilon是一个控制接近度的值。 用绝对阈值的方法是许多书上推荐的:
if(fabs(a-b)<0.000001) 但这种使用固定阈值0.000001的方法难以持续有效。因为, 有可能两个较小的本应不相等的数正好相差小于0.000001, 而两个本应看做相等的大数却相差大于0.000001。 Doug Gwyn推荐使用“相对差”比较浮点数:
//表达式值1
//表达式值0 //d=1
f=a>b>c //f=0
整理ppt
4
– 关系运算表达式使用中要注意各步骤的逻辑值:
例 若a=0; x=0.3;b=0.5; 则 a<=x<=b的值为 0
例因值为5>为2a><7=>0x8值在为C中1,是所允以许x的<=,b的值为0 例因为上int式i=运1,算j=步7,骤a; 是左结合 ( (5>2) >7 ) > 8 所以 a5=>i2+>(j7%>48!的=0值); 为0
例 a=4;b=5;
!a
值为0 a=4非0为真,非a即为假
a&&b
值为1
a||b
值为1
!a||b 4&&0||2
值为1 值为1
5>3&&2||8<4-!0 //(5>3)&&2||(8<(4-(!0))) 值为1
'c'&&'d'
值为1
整理ppt
13
短路特性(short-circuit evaluation): 逻辑表达式求解时,并非所有的逻辑运 算符都被执行。在逻辑表达式运算时, 如果已经能够计算出表达式的值,后面 的运算就不进行了。
&& :从左向右 || :从左向右
例 a<=x&&x<=b (a<=&&(x<=b)
a>b&&x>y
(a>b)&&(x>y)
a==b||x==y (a==b)||(x==y)
!a||a>b
(!a)||(a>b)
整理ppt
12
混合运算顺序
!(非) 算术运算符 关系运算符 && || 赋值运算符
(高) (低)
• 逻辑运算符和逻辑表达式
Logical Operators and Expressions
• 条件表达式
Conditional Expressions
• if 语句 • switch 语句
整理ppt
3
关系运算符和以关系运算符组成的关系表达

<
关系运算符
<=
– 种类:< <= >= > == !=
> >=
– 结合方向:自左向右 关系表–达优式先:级以别关:系符连起来的式子
== !=
关系表达式的值:是逻辑值“真”或“假”,
用1和0表示;
优先级6(高) 优先级7(低)
1表示逻辑真,0表示逻辑假(非零为真)
例 int a=3,b=2,c=1,d,f;
a>b
//表达式值1
(a>b)==c b+c<a d=a>b
0
main(){
int a=0,b=1;
1
printf("%d\n",a==b);
printf("%d\n",a=b);
getch();
}
整理ppt
6
关系运算注意:
1. 避免对实数作相等或不等的判断 如 1.0/0.00001*0.00001==1.0;结果为 0 一般而言,对于实型量 a,b作相等或不等的判
相关主题