逻辑运算及判断选取控制.ppt
《逻辑运算及判断选取控制.ppt》由会员分享,可在线阅读,更多相关《逻辑运算及判断选取控制.ppt(65页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第四章第四章 逻辑运算和判断选取控制逻辑运算和判断选取控制4 41 1 关系运算符和关系表达式关系运算符和关系表达式关关系系运运算算是逻辑运算中比较简单的一种。所谓“关关系系运运算算”实际上是“比比较较运运算算”。将两个值进行比较,判断比较的结果是否符合给定的条件。例如,a a3 3是一个关系表达式,大于号()是一个关系运算符4.1.1 4.1.1 关系运算符及其优先次序关系运算符及其优先次序 C语言提供6种关系运算符:(1)(小于)(2)(大于)(4)=(大于或等于)(5)=(等于)(6)!=(不等于)关于优先次序:1前4种关系运算符(,)的优先级别相同,后两种也相同。前4种高于后2种。2关
2、系运算符的优先级低于算术运算符。3.关系运算符的优先级高于赋值运算符。高高 低低 算算术术运运算算符符 关关系系运运算算符符 赋赋值值运运算符算符例如:1.ca+b 等效于 c(a+b)2.ab!=c 等效于(ab)!=c3.a=bc 等效于 a=(bb,abbc,(a3)(b=5),ab,(ab)(bc)关系表达式的值是一个逻辑值,即“真”或“假”。例如,关系表达式“5=3”的值为“假”“5=0”的值为“真”。C语言没有逻辑型,以1代表“真”,以“0”代表“假”。例如,若a=3,b=2,c=1,则:ab的值为”真”,表达式的值为1。(ab)=c的值为“真”,表达式的值为1。bca的值为“假”
3、,表达式的值为0。如果有以下赋值表达式:dab d的值为1。fabc f的值为0注意:数学中的2x10不能在C语言中用2x10表示。因为2x2&xb)&(xy),(ab)|(xy)。2.“!”是一目(元)运算符”,只要求有一个运算量,如!(ab)。逻辑运算规则如下:a&b 若a,b为真,则a&b为真。a|b 若a,b之一为真,则a|b为真。!a 若a为真,则!a为假。下表为逻辑运算的“真值表”。用它表示当a和b的值为不同组合时,各种逻辑运算所得到的值。a b !a !b a&b a|b T T F F T T T F F T F T F T T F F T F F T T F F 含逻辑运算的
4、表达式计算优先顺序:优先次序:优先次序:高高 低低 !算算术术运运算算符符关关系系运运算算符符&|赋赋值值运算符运算符1)!a&b|xy&c (!a)&b)|(xy)&c)2)ab&xy (ab)&(xy)3)a=b|x=y(a=b)|(x=y)4.2.24.2.2逻辑表达式逻辑表达式 如前所述,逻辑表达式的值应该是一个逻辑量“真”或“假”。C语言编译系统在给出逻辑运算结果时,以数值1代表“真”,以0代表“假”,但在判断一个量是否为“真”时,以以0 0代代表表“假假”,以以非非0 0代代表表“真真”。即将一个非零的数值认作为“真”。若a4,则!a的值为0。若a=4,b=5,则a&b的值为1。a
5、、b值同前,a|b的值为1。a、b值同前,!a|b的值为1。4&0|2的值为1。通过这几个例子可以看出,由系统给出的逻辑运算结果不是0就是1,不可能是其它数值。而在逻辑表达式中作为参加逻辑运算的运算对象(操作数)可以是0(“假”)或任何非0的数值(按“真”对待)。例如 53&2|84-!0表达式自左至右扫描求解。实际上,逻辑运算符两侧的运算对象不但可以是0和1,或者是0和非0的整数,也可以是任何类型的数据任何类型的数据。可以是字符型、实型或指针型等。系统最终以0和非0来判定它们属于“真”或“假”。例如 c&d的值为1(因为c和d的Ascii值都不为0,按“真”处理)。在逻辑表达式的求解中,并不
6、是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。例如:1a&b&c 只有a为真(非0)时,才需要判别b的值,只有a和b都为真的情况下才需要判别c的值。只要a为假,就不必判别b和c,(此时整个表达式已确定为假)。如果a为真,b为假,不判别c。2a|b|c 只要a为真(非0)就不必判别b和c对&运算符只有a0,才继续进行右面的运算。对|运算符来说,只有a=0才继续进行其右面的运算。如果有下面的逻辑表达式:(m ma ab b)&(n=cn=cd d)当a=1,b=2,c=3,d=4,m和n的原值为由于ab的值为0,m=0,而n=cd不被执行,因此n的
7、值不是0而仍保持原值1。例如:1).a=0;b=1;c=2;d=(a+)&(b+)&(-c);运算结果:d=0,a=1,b=1,c=22)a=0;b=1;c=2;d=(a+)|(b+)|(-c);运算结果:d=1,a=1,b=2,c=2 例如,判别某一年year是否闰年。闰年的条件是符合下面二者之一:能被4整除,但不能被100整除。能被4整除,又能被400整除。可以用一个逻辑表达式来表示闰年:year40&year100!=0|year400=0 可以加一个“!”用来判别非闰年:!(year40&year100!=0|year400=0)4 43 if3 if语句语句 ifif语语句句是是用用
8、来来判判定定所所给给定定的的条条件件是是否否满满足足,根根据据判判定定的的结结果果(真真或或假假)决决定执行给出的两种操作定执行给出的两种操作之一。4.3.1 if4.3.1 if语句的三种形式语句的三种形式C语言提供了三种形式的if语句:1if if (表达式)(表达式)语句语句 例如:if(xy)printf(”d”,x);这种if语句的执行过程见图假表达式 语句真2ifif(表达式)(表达式)语句语句1 else 1 else 语句语句2 2if(xy)printf(”d”,x);else printf(”d”,y);见图表表 达达式式语句语句1语句语句2真假3if if (表达式(表达
9、式1 1)语句语句1 1 else if else if(表达式(表达式2 2)语句语句2 2 else if else if(表达式(表达式3 3)语句语句3 3 else if else if(表达式(表达式m m)语句语句m m else else 语句语句n n表达式表达式1FT表达式表达式3FT表达式表达式2FT表达式表达式4FT语句语句4语句语句5语句语句3语句语句2语句语句1 例如 if(number500)cost015;else if(number300)cost=010;else if (number100)cost=0075;else if(number50)cost0.
10、05;else cost0;说明:1.三种形式的if语句中在if后面都有“表达式”,一般为逻逻辑辑表表达达式式或或关关系系表表达达式式。例 如,if(a=b&x=y)printf(”a=b,x=y”);2.表表达达式式的的类类型型不不限限于于逻逻辑辑表表达达式式,可可以以是是任任意意的的数数值值类类型型(包包括括整整型型、实实型型、字字符型、指针型数据)符型、指针型数据)。if(3)printf(“ok.”);if(a)printf(”d”,a);3第第二二、第第三三种种形形式式的的ifif语语句句中中,在在每每个个elseelse前前面面有有一一分分号号,整整个个语语句句结结束束处处有有一一
11、分分号号。例如:if (x0)printf(“%f”,x);else printf(“%f”,-x);注意,不不要要误误认认为为上上面面是是两两个个语语句句(if语句和else语句)。它们都属于同一个if语句。elseelse子子句句不不能能作作为为语语句句单单独独使使用用,它它必必须须是是ifif语句的一部分,语句的一部分,与与ifif配对使用。配对使用。4在if和else后面可以只含一个内嵌的操作语句(如上例),也可以有多多个个操操作作语语句句,此时用花括号“”将几个语句括起来成为一个复合语句。如:if (abc&bca&cab)s=05*(ab+c);area=sqrt(s*(s-a)*
12、(s-b)*(s-c));printf(”area6.2f”,area);else printf (”it is not a trilateral”);注意:此时的后面无需;,因为内本身已经是一个完整的复合语句。例4.1输入两个实数,按代数值由小到大次序输出这两个数。main()float a,b,t;scanf(%f,%f,&a,&b);if(ab)t=a;a=b;b=t;printf(%5.2f,%5.2f,a,b);例42输入三个数,按大小顺序输出。main()float a,b,c,t;printf(Input a,b,cn);scanf(%f,%f,%f,&a,&b,&c);if(a
13、b)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;printf(%5.2f,%5.2f,%5.2f,a,b,c);4.3.24.3.2语句的嵌套语句的嵌套 在if语句中又包含一个或多个if语句称为ifif语句的嵌套语句的嵌套。一般形式如下:if()if()语句1 else 语句2 else if()语句3 else 语句4 应应当当注注意意ifif与与elseelse的的配配对对关关系系。从从最最内内层层开开始始,elseelse总总是是与与它它上上面面最最近近的的(未曾配对的)(未曾配对的)ifif配对配对。if()if()语句1else i
14、f()语句2 else 语句3因因此此最最好好使使内内嵌嵌ifif语语句句也也包包含含elseelse部部分分,这这样样ifif的的数数目目和和elseelse的的数数目目相相同同,从从内内层层到外层一一对应,不致出错。到外层一一对应,不致出错。如果if与else的数目不一样,为实现程序设计者的企图,可以加花括弧来确定配对关系。例如:if()if ()语句1 else 语句2这时if限定了内嵌if语句的范围,因此else与第一个让配对。例43有一函数:-1 (x0)编一程序,输入一个x值,输出y值。有以下几种写法,请读者判断哪些是正确的?程序1:main()int x,y;scanf(”d”,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 逻辑运算 判断 选取 控制
限制150内