- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
d=a>b f=a>b>c
关系运算注意:
例 若a=0; b=0.5; x=0.3; 则 a<=x<=b的值为 0
例 5>2>7>8在C中是允许的, 值为 0
例 int i=1, j=7,a; a=i+(j%4!=0);
则a= 2
例 ‘a’>0
结果为
1
‘A’>100 结果为
0
例 应避免对实数作相等或不等的判断
11
C Programming Language
7. 已知int x=15,y=5; 执行语句printf(“%d\n”,x%=(y%=2)); 后,输出结果为____。
8. int a=3,b=4,c=5;则值为0的表达式是()
A) ‘a’&&‘b’
B) a<=b
C) a||b+c&&b-c
D) !((a<b)&&!c||1)
7
C Programming Language
例:判断某一年是否是闰年。条件是 ① 能被4整除,但不能被100整除 ② 或能被400整除。 用year表示年份,判断闰年的逻辑表达式为:
(year%4==0 && year%100!=0)||(year % 400==0)
如果给year输入一个的值,使上面的表达式的值为1 时,则year所代表的年份就是闰年。
种类:< <= = = >= > != 结合方向:自左向右 优先级别:
< <= 优先级6 > (高)
>=
== 优先级7 != (低)
关系表达式的值:是逻辑值“真”或“假”,
用1和0表示
例 int a=3,b=2,c=1,d,f;
a>b
(a>b)==c
b+c<a
3
C Programming Language
如(xx%>02?==11:()x?<10:0?-1:0)
非0 expr1 0
例 优先(级x>:=10)3?x:-x
x?结‘a合’:‘(b方c’>向=‘/:a/x’自=&0右&,表向c达<左=式‘z值’)?为c-’‘取a’eb+x’’p;Ar’2x:值c‡0,表达取式e值xp为r3值
‘a’如 a>b?a:c>d?c:d a>b?a:(c>d?c:d) x>eyx?p1r:11、.5ex/p/xr>2y、,e值xp为r31类.0;型x可<不y 同,值,为表1.达5 式值取
已知a=1,b=2,c=3
逻辑运算规则简化:
⑴、两个表达式作&&,只要一个的值为0, 不必计算另一个,该表达式的值为0。 例:int a=0,b=2;a && (b+=b)
⑵、两个表达式作 || ,只要一个的值非0, 不必计算另一个,该表达式的值为1。 例:int a=5,b=2; a || (b+=b) 例:a=1;b=2;c=3;d=4;m=1;n=1; (m=a>b)&&(n=c>d) m=?0 ,n=?1
9. “20<x<30或x<-100”的C语言表达式是____。
10
C Programming Language
10 10
-10 2
2 -2
1. 已知int x=1,y=2,z;执行语句z=x>y?++x:y++;后,x、 y、z的值分别为____、____和 ____ 。
2. 已知int a=4,b=5,c;执行语句c=a=a>b后,a的值为 ____ 。
3. 已知int x=10,y=3 , z;执行语句printf("%d\n" , z = (x%y , x/y));后,输出结果为 ____ 。
4. 已知char ch='A‘;ch=(ch>='A'&&ch<='Z')?(ch+32):ch;的值为 ____。
5. 已知w=1,x=2,y=3,z=4;则表达式5+w>x?w:y<z?y:z; 的值为 ____。
6. 执行printf(“%d”,(a=2&&(b=-2)));语句后,输出结果 为____。
C 语言程序设计 Lecture 4
选择结构程序设计
C Programming Language
关系运算符和关系表达式《 逻辑运算符和逻辑表达式《
条件运算符和条件表达式《
if语句《
switch语句《
goto语句《
选择结构程序示例《
2
C Programming Language
关系运算符和表达式
关系运算符
较高的类型
9
C Programming Language
课堂练习
1.判断一个点是否
-10
落入圆形中。 x*x+y*y<=100
2.判断一个点是否落 入阴影部分。
(小圆的半径为1)
(pow(x-2,2)+pow(y-2,2))<=1|| -2 ቤተ መጻሕፍቲ ባይዱpow(x-2,2)+pow(y+2,2))<=1|| (pow(x+2,2)+pow(y-2,2))<=1|| (pow(x+2,2)+pow(y+2,2))<=1
运算结果: 0表示“假”, 1表示“真”,
5
C Programming Language
若a=4,!a的值为__ 若a=4,b=5, 则a && b 的值为__ 则a || b 的值为__ 则!a || b 的值为__ 4 && 0||2 的值为__
优先级: 结合方向:
! (2) 高
&& (11) 低
变换一下角度,如何判断year不是闰年?
(year%4!=0)||(year%100==0 && year % 400 !=0)
8
C Programming Language
条件运算符与表达式
一般形式: expr1 ? expr2 : expr3 功能:相当于条件语句,但不能取代一般if语句
条例件(运a=算=b符)?可’Y嵌’:套’N’
|| (12)
! :从右向左 && :从左向右 || :从左向右
! 算术 关系 逻辑 赋值
① a+b>c&&b==c ② a||b+c&&b-c ③ !(a>b)&&!c||1 ④ !(x=a)&&(y=b)&&0 ⑤ !(a+b)+c-1&&b+c/2
6
C Programming Language
如 1.0/3.0*3.0==1.0 结果为 0 可改写为:fabs(1.0/3.0*3.0-1.0)<1e-6
4
C Programming Language
逻辑运算符和表达式
逻辑运算符
种类: ! && || 逻辑运算真值表(见教材) (逻辑运算--->产生真假值的运算)
C语言中,
运算量: 0表示“假” 非0表示“真”,