1、1第五章第五章 选择结构程序设计选择结构程序设计内容提要:内容提要:逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式 关系运算符和关系表达式关系运算符和关系表达式 ifif语句语句 switchswitch语句语句Ch5 选择结构程序设计选择结构程序设计2第五章第五章 选择结构程序设计选择结构程序设计一、逻辑运算符和表达式一、逻辑运算符和表达式 P52 什么是逻辑运算什么是逻辑运算 逻辑运算用来判断一件事情是逻辑运算用来判断一件事情是“对对”的还是的还是“错错”的,或的,或者说是者说是“成立成立”还是还是“不成立不成立”,判断的结果是二值的。,判断的结果是二值的。什么是逻辑量什么是逻辑量 凡是参加
2、逻辑运算的变量、常量都是逻辑量。凡是参加逻辑运算的变量、常量都是逻辑量。什么是逻辑值什么是逻辑值 逻辑量、逻辑表达式其最后的运算结果的值就是逻辑值逻辑量、逻辑表达式其最后的运算结果的值就是逻辑值。逻辑值只能是逻辑值只能是“0”“0”和和“1”“1”这二个数。这二个数。“1”“1”表示逻辑真(成表示逻辑真(成立);立);“0”“0”表示逻辑假(不成立)。表示逻辑假(不成立)。3第五章第五章 选择结构程序设计选择结构程序设计ab!a!ba&ba|b真真假假真真假假假假假假真真真真一、逻辑运算符和表达式一、逻辑运算符和表达式 P52 逻辑运算符逻辑运算符 种类:种类:&(与)(与)|(或)(或)!(
3、非非)逻辑运算真值表逻辑运算真值表C C语言中语言中,运算量运算量:0 0表示表示“假假”,非非0 0表示表示“真真”,运算结果运算结果:0 0表示表示“假假”,1 1表示表示“真真”,真真假假假假假假假假假假真真真真假假假假真真真真真真假假真真真真真真真真假假假假4第五章第五章 选择结构程序设计选择结构程序设计!(2)&(11)|(12)高高低低l优先级:优先级:l结合方向:结合方向:!:从右向左从右向左&:从左向右从左向右|:从左向右从左向右例例 a=4;b=5;!a a&b a|b !a|b a&0|2 53&2|83)&2|(8b)&(n=cd)/结果结果m=0,n=1含含&和和|表达
4、式在编译时,即从左到右的运算中,表达式在编译时,即从左到右的运算中,结果一经确定就不向下运算下去。结果一经确定就不向下运算下去。(1)1)a&b&ca&b&c 只要只要a a为为假假,就不必判断就不必判断b b和和c c的值,只有的值,只有a a为真时,为真时,才需要判断才需要判断b b的值,只有的值,只有a a和和b b都为真时,才需要判断都为真时,才需要判断c c的值。的值。(2)2)a|b|ca|b|c 只要只要a a为为真真,就不必判断,就不必判断b b和和c c的值,只有的值,只有a a为为 假,才判断假,才判断b b。a a和和b b都为假才判断都为假才判断c c短路特性:短路特性
5、:逻辑表达式求解时,并非所有的逻辑运算符都被执行,逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符行该运算符 P94P946第五章第五章 选择结构程序设计选择结构程序设计例:若例:若A=5,B=0,A=5,B=0,求表达式求表达式!B2|5&A=5!B2|5&A=5的值。的值。!B2|5&A=5!B2|5&A=5 第一步:第一步:12|5&A=512|5&A=5 第二步:第二步:1|5&A=51|5&A=5 第三步:第三步:1|5&11|5&1 第四步:第四步:1|11|1
6、 第五步:第五步:1 1例:若例:若A=3,B=4,C=5 A=3,B=4,C=5 写出下列逻辑表达式的值。写出下列逻辑表达式的值。!(3+4)+C-1&B+C/2 0+C-1&B+C/2 0+C-1&B+2 4&6 17第五章第五章 选择结构程序设计选择结构程序设计两字符两字符之间不之间不能加空能加空格格二、关系运算符和表达式二、关系运算符和表达式 P51 关系运算符关系运算符种种 类:类:=!=!=结合方向:自左向右结合方向:自左向右优先级别:优先级别:=!=优先级优先级6(高)(高)优先级优先级7(低)(低)关系表达式的值:是逻辑值关系表达式的值:是逻辑值“真真”或或“假假”,用,用1
7、1和和0 0表示表示例例 int a=3,b=2,c=1,d,f;ab ab=c b+cb f=abc/表达式值表达式值1/表达式值表达式值1/表达式值表达式值0/d=1/f=0算术运算符算术运算符 关系运算符关系运算符 赋值运算符赋值运算符高于高于高于高于8第五章第五章 选择结构程序设计选择结构程序设计例例 int i=1,j=7,a;a=i+(j%4!=0);则则a=2例例 a0 结果为结果为 A100 结果为结果为109第五章第五章 选择结构程序设计选择结构程序设计 选择型程序设计选择型程序设计 P95P95ifif语句(条件选择语句)语句(条件选择语句)ifif语句的三种语句的三种 形
8、式形式形式一:形式一:格式:格式:if(if(表达式表达式)语句语句1;1;语句语句2 2;执行过程:执行过程:l形式二:形式二:u格式:格式:if(if(表达式表达式)语句语句1 1;else else 语句语句2 2;语句语句3 3;u执行过程:执行过程:例:例:if(xy)max=x;else max=y;printf(%d,max);例:例:if(xy)printf(“%d”,x);printf(“%d”,y);表达式语句1非0=0语句2 表达式语句1语句2非0=0语句3后后续续语语句句10第五章第五章 选择结构程序设计选择结构程序设计形式三:形式三:格式:格式:if(if(表达式表达
9、式1)1)语句语句1 1else if(else if(表达式表达式2)2)语句语句2 2else if(else if(表达式表达式3)3)语句语句3 3.else if(表达式表达式m)语句语句melse else 语句语句n n表达式表达式1语句语句1非非0=0表达式表达式2表达式表达式3语句语句n语句语句3语句语句2非非0非非0=0=0u执行过程:执行过程:11第五章第五章 选择结构程序设计选择结构程序设计#include void main()float x,y;printf(enter x:);scanf(%f,&x);if(x=10)printf(not define x.n);
10、else if (x=1)y=x+5;else if (x10 x102x2x1x101x10 x+5x+5x1x112第五章第五章 选择结构程序设计选择结构程序设计如:如:if(a=b&x=y)printf(“a=b,x=y”);if(3)printf(“OK”);if(a)printf(“%d”,a);l说明:说明:uifif后面的表达式类型任意后面的表达式类型任意u语句可以是复合语句语句可以是复合语句 例例 考虑下面程序的输出结果考虑下面程序的输出结果:#include void main()int x,y,t;scanf(%d,%d,&x,&y);if(xy)t=x;x=y;y=t;e
11、lse x+;y+;printf(%d,%dn,x,y);13第五章第五章 选择结构程序设计选择结构程序设计v if语句嵌套语句嵌套:if(表达式表达式1)if(表达式表达式2)语句语句1 else 语句语句2else if(表达式表达式3)语句语句3 else 语句语句4 语句语句5内嵌内嵌if内嵌内嵌ifif(表达式表达式1)if(表达式表达式2)语句语句1 else 语句语句2 语句语句3内嵌内嵌ifif(表达式表达式1)if(表达式表达式2)语句语句1;else 语句语句2 语句语句3 内嵌内嵌ifif(表达式表达式1)语句语句1else if(表达式表达式2)语句语句2 else 语
12、句语句3 语句语句4内嵌内嵌if14第五章第五章 选择结构程序设计选择结构程序设计if else 配对原则配对原则:缺省缺省 时,时,else总是总是和它上面离它最近的未配对的和它上面离它最近的未配对的if配对配对if()if()if()else.else.else.15第五章第五章 选择结构程序设计选择结构程序设计例:例:if(a=b)if(b=c)printf(“a=b=c”);else printf(“a!=b”);修改:修改:if(a=b)if(b=c)printf(“a=b=c”);else printf(“a!=b”);实现实现if else 正确配对方法:加正确配对方法:加 16
13、第五章第五章 选择结构程序设计选择结构程序设计#include void main()int a=1,b=-1,c=3;if(ab)if (b0)c=0;else c+;else c=1;printf(%dn,c);1.写出程序的运行结果写出程序的运行结果2.若执行以下程序时从键若执行以下程序时从键盘上键入盘上键入5,则输出结果,则输出结果是什么是什么#include void main()int x;scanf(%d,&x);if (+x6)printf(%dn,x);else printf(“%dn,x+1);结果:结果:1结果:结果:7a=-2,结果:结果:0b=0,结果:结果:417第
14、五章第五章 选择结构程序设计选择结构程序设计#include void main()int a=4,b=3,c=5,t=0;if(ab)t=a;a=b;b=t;if (ac)t=a;a=c;c=t;printf(%d,%d,%dn,a,b,c);3.写出下列程序的运行结果写出下列程序的运行结果#include void main()int i=1,j=1,k=1;if (j+|k+)&i+)printf(“%d,%d,%dn”,i,j,k);#include void main()int x,y=5;if (x=y!=0)printf(“%d n”,x);else printf(“%d n”,
15、x+2);结果:结果:5,0,3结果:结果:2,2,1结果:结果:118第五章第五章 选择结构程序设计选择结构程序设计例例 考虑下面程序输出结果考虑下面程序输出结果:#include stdio.h void main()int x=100,a=10,b=20;int v1=5,v2=0;if(ab)printf(“%d”,a);else printf(“%d”,b);printf(“%d”,ab?a:b);表达式表达式1取表达式取表达式2值值取表达式取表达式3值值非非0=0条件运算符可嵌套条件运算符可嵌套 如如 x0?1:xb?a:cd?c:d ab?a:(cd?c:d)表达式表达式1、表达
16、式、表达式2、表达式、表达式3类型可不同,表达式值取较高类型可不同,表达式值取较高的类型的类型例例 x?a:b /x=0,表达式值为表达式值为b;x0,表达式值为表达式值为a xy?1:1.5 /xy ,值为值为1.0;x60n”);break;.25第五章第五章 选择结构程序设计选择结构程序设计例例 switch(score)case 5:printf(“Very good!”);case 4:printf(“Good!”);case 3:printf(“Pass!”);case 2:printf(“Fail!”);default :printf(“data error!”);score为为
17、4时,输出:时,输出:Good!Pass!Fail!data error!score为为1时,输出:时,输出:data error!score为为5时,输出:时,输出:Very good!Good!Pass!Fail!data error!26第五章第五章 选择结构程序设计选择结构程序设计例例 void main()int x=1,y=0,a=0,b=0;switch(x)case 1:switch(y)case 0:a+;break;case 1:b+;case 2:a+;b+;break;printf(a=%d,b=%dn,a,b);printf(a=%d,b=%dn,a,b);运行结果:
18、运行结果:a=2,b=1a=2,b=1运行结果:运行结果:a=2,b=1运行结果:运行结果:a=2,b=2a=2,b=227第五章第五章 选择结构程序设计选择结构程序设计28第五章第五章 选择结构程序设计选择结构程序设计P98 例5.1 例5.3 例5.4 例5.5 29第五章第五章 选择结构程序设计选择结构程序设计if (s0&s5)x=2;else x=1;else x=0;将以下将以下if-else语句改写成语句改写成switch语句,请填空。语句,请填空。switch (s0&s5)case 1:x=2;case 0:x=1;break;case :x=0;1break030第五章第五章 选择结构程序设计选择结构程序设计 练习:练习:P111 5.3 作业:作业:5.5 5.631第五章第五章 选择结构程序设计选择结构程序设计第五章 结束
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。