第四章.选择结构程序设计_第1页
第四章.选择结构程序设计_第2页
第四章.选择结构程序设计_第3页
第四章.选择结构程序设计_第4页
第四章.选择结构程序设计_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、本章内容:本章内容:1.关系运算符和关系表达式关系运算符和关系表达式2.逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式3.if语句的使用语句的使用4.条件运算符和条件表达式条件运算符和条件表达式5.switch语句的使用语句的使用 顺序结构顺序结构语句语句1语句语句2条件条件语句语句1语句语句2yn 选择结构选择结构-根据某些条件决定执行或不执行某组操作根据某些条件决定执行或不执行某组操作 关系运算符和表达式关系运算符和表达式1.1.关系运算符及优先次序关系运算符及优先次序 比较两个量的运算符称为关系运算符。比较两个量的运算符称为关系运算符。 在语言中有以下关系运算符:在语言中有以下关系运算符:

2、 小于小于 = 大于大于 = = 大于或等于大于或等于 = = = = 等于等于 != != 不等于不等于 关系运算符的优先级别:关系运算符的优先级别:(1) (1) 、=、 、=c-d x3/2 a+10的值为的值为“真真”,即为,即为1。 (a=3)(b=5)由于由于35不成立,其值为不成立,其值为0。 关系表达式是表达式,因此也允许出现嵌套的情况。关系表达式是表达式,因此也允许出现嵌套的情况。如:如:a(bc), a!=(c=d)等。等。2.2.关系表达式关系表达式1.1.逻辑运算符逻辑运算符 语言中提供了三种逻辑运算符语言中提供了三种逻辑运算符 ! 非运算非运算 & 与运算与运算 |

3、或运算或运算 运算符运算符& 、运算符、运算符| 均为双目运算符,具有左结合性。均为双目运算符,具有左结合性。 非运算符非运算符!为单目运算符,具有右结合性。为单目运算符,具有右结合性。 1)逻辑运算符优先级如下:逻辑运算符优先级如下: (1) ! 高于高于 & 高于高于 | (2) &, | 低于关系运算符,!高于算术运算符低于关系运算符,!高于算术运算符(*, / ) 逻辑运算符和表达式逻辑运算符和表达式按照运算符的优先顺序可以得出:按照运算符的优先顺序可以得出: ab & cd 等价于等价于 (ab) & (cd) !b=c|da 等价于等价于 (!b)=c)|(dc & x+yc) &

4、 (x+y)0 & 42,由于由于50为真,为真,42也为真,其结果也为真,其结果也为也为“真真”,表达式的值为,表达式的值为1。3)逻辑运算的规则:)逻辑运算的规则: (2)或运算)或运算| 参与运算的两个量只要有一个为真参与运算的两个量只要有一个为真(非非0),结果就为真,结果就为真(值值为为1)。 两个量都为假(值为两个量都为假(值为0)时,结果为假(值为)时,结果为假(值为0)。)。 例如:例如:50 | 58, 结果也就为真(值为结果也就为真(值为1)。)。(3)非运算)非运算! 参与运算量为真(非参与运算量为真(非0)时,结果为假(值为)时,结果为假(值为0);参与运);参与运算量

5、为假(值为算量为假(值为0)时,结果为真(值为)时,结果为真(值为1)。)。 例如:例如:!(50)的结果为假,即为的结果为假,即为0。 2.2.逻辑表达式逻辑表达式 逻辑表达式的一般形式为:逻辑表达式的一般形式为: 表达式表达式 & 表达式表达式 表达式表达式 | 表达式表达式 !表达式!表达式 逻辑表达式的值:各种逻辑运算的最后值,以逻辑表达式的值:各种逻辑运算的最后值,以“1”和和“0”分别代表分别代表“真真”和和“假假”。 3)逻辑运算的规则:)逻辑运算的规则: 在逻辑表达式的求解中,并不是所有的逻辑运算符在逻辑表达式的求解中,并不是所有的逻辑运算符都执行,只有在必须执行下一个逻辑运算

6、符才能求出表都执行,只有在必须执行下一个逻辑运算符才能求出表达式的值时,才执行下一个运算符。达式的值时,才执行下一个运算符。 (1) 表达式表达式1 & 表达式表达式2 & a+b0 & b+ (a=1,b=-2) 如果:表达式如果:表达式1的值是的值是0,无论表达式,无论表达式2的值是什么,的值是什么,整个表达式的值都为整个表达式的值都为0,因此表达式,因此表达式2就不计算了。就不计算了。 (2)表达式)表达式1 | 表达式表达式2 | a+b0 | b+ ( a=1,b=2 ) 如果:表达式如果:表达式1的值是的值是1,无论表达式,无论表达式2的值是什么,的值是什么,整个表达式的值都为整个

7、表达式的值都为1,因此表达式,因此表达式2就不计算了就不计算了。 说说 明明:(3)若)若a1,b2,c3,d=4,m和和n原值为原值为1 (m=ab) & (n=cd) 则则m0,而而n仍保持原值仍保持原值 说说 明明:1.if1.if语句有三种基本形式语句有三种基本形式 1)第一种形式,基本形式)第一种形式,基本形式: if (表达式表达式) 语句;语句; 如果表达式的值为真,则执行其后语句,否则不执行该语句。如果表达式的值为真,则执行其后语句,否则不执行该语句。语句语句表达式表达式非非00if if 语句语句void main() int a,b,max; scanf(%d,%d,&a,

8、&b); max=a; if (maxb) printf(max=%dn,a); else printf(max=%dn,b); 例:例:语句1表达式非00语句22)第二种形式,第二种形式,if-else形式形式前二种形式的前二种形式的if语句一般都用于两个分支的情况。语句一般都用于两个分支的情况。当有多个分支选择时,可采用当有多个分支选择时,可采用if-else-if语句,其一般形式为:语句,其一般形式为: if(表达式表达式1) 语句语句1; else if(表达式表达式2) 语句语句2; else if(表达式表达式m) 语句语句m; else 语句语句n; 语句n语句1表达式1非00语

9、句2非00表达式2表达式m非00语句mifelse if 结构的执行过程结构的执行过程3)第三种形式,第三种形式,if-else-if形式形式void main() int result; printf(input your result: ); scanf(“%d”,&result); if (result=90) printf(“your result is wounderful!n); else if(result =80) printf( your result is good!n); else if(result =70) printf( your result is normal!

10、n); else if(result =60) printf( your result is passed!n); else printf(“youll take a another test!n);例例 如:如:(1)在三种形式的在三种形式的if语句中,在语句中,在if关键字之后均为关键字之后均为表表达式达式。该表达式通常是。该表达式通常是逻辑表达式逻辑表达式或或关系表达式关系表达式,但也可以是但也可以是其它表达式其它表达式,如,如赋值表达式赋值表达式等,甚至等,甚至也可以是一个也可以是一个变量变量。注注 意意 :例如:例如: if(a=5) 语句;语句; if(b) 语句;语句; 只要表达

11、式的值为非只要表达式的值为非0,即为,即为“真真”。 但是在但是在 if(a=5) ;中表达式的值永远为非;中表达式的值永远为非0,所以其后的语句总是要执行的,但在语法上是合法所以其后的语句总是要执行的,但在语法上是合法的。的。又如,问下面程序段的输出结果?又如,问下面程序段的输出结果? : int b,a=10; scanf(%d,&b); if (a=b) printf(a=b%dn,a); else printf(a!=b%d,%dn,a,b); 注注 意意 :(2) 在在if 语句中,条件判断语句中,条件判断表达式必须用括号括起表达式必须用括号括起来来,即使是一个变量的最简单表达式,也

12、要用括号,即使是一个变量的最简单表达式,也要用括号括起来;括起来;在语句之后必须加分号在语句之后必须加分号。(3) 在在if 语句的三种形式中,所有的语句应为单个语句,语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组如果要想在满足条件时执行一组(多个多个)语句,则必须语句,则必须把这一组语句用把这一组语句用 括起来组成一个复合语句括起来组成一个复合语句。注意注意:例如:交换两个变量例如:交换两个变量 if (ab) t= a; a=b; b=t; 当当if语句中包含语句中包含if语句时,则构成了语句时,则构成了if 语句嵌套的情形。语句嵌套的情形。其一般形式可表示如下:其

13、一般形式可表示如下:if (表达式表达式1) if (表达式表达式2) 语句语句1; else 语句语句2;2. if 2. if 语句的嵌套语句的嵌套 if(表达式表达式1) if (表达式表达式2) 语句;语句; 在嵌套内的在嵌套内的if语句可能又是语句可能又是if-else型的,这将会型的,这将会出现多个出现多个if和多个和多个else重叠的情况,这时要特别注重叠的情况,这时要特别注意意if和和else的配对问题。的配对问题。 if (x=1) if(x5) x+; else x-; 其中的其中的else究竟是与哪一个究竟是与哪一个if配对呢配对呢?应该理解为:应该理解为: 还是应理解为

14、:还是应理解为: if( x=1) if(x=1) if(x5) if(x5) x+; x+; else elsex-; x-;语言规定,语言规定,else 总是总是与它前面最近的与它前面最近的if配对配对例例 如:如:例:例:void main() int a,b; printf(please input a,b: ); scanf(%d,%d,&a,&b); if (a!=b) if (ab) printf(abn); else printf(a=1) if(x5) x+; else x-; 如果要使如果要使else与第一个与第一个if配对,则可加括号配对,则可加括号 来实现。来实现。例例

15、5.3 -1 (x0)main() int x,y; scanf(%d,&x) if(x=0) if (x0) y=1; else y=0; else y=-1;程序程序1 y=0; if (x!=0) if (x0) y=1; else y=-1;程序程序2 y=-1; if(x=0) if (x0) y=1; else y=0;程序程序3 条件运算符为条件运算符为 ? : 三目运算符,即有三个参与运算的量。三目运算符,即有三个参与运算的量。 由条件运算符组成条件表达式的一般形式为:由条件运算符组成条件表达式的一般形式为: 表达式表达式1 ? 表达式表达式2 : 表达式表达式3 其求值规则为

16、:如果表达式其求值规则为:如果表达式1的值为真,则以表达式的值为真,则以表达式2 的值的值作为条件表达式的值,否则以表达式作为条件表达式的值,否则以表达式2的值作为整个条件表的值作为整个条件表达式的值。达式的值。条件运算符和条件表达式条件运算符和条件表达式 条件表达式通常用于赋值语句之中。条件表达式通常用于赋值语句之中。 例如条件语句:例如条件语句: if(ab) max=a; else max=b; 可用条件表达式写为可用条件表达式写为 max=(ab)?a:b; 执行该语句的语义是:如执行该语句的语义是:如ab为真,则把为真,则把a 赋予赋予max,否则把否则把b 赋予赋予max。条件运算

17、符和条件表达式条件运算符和条件表达式 条件运算符的运算优先级条件运算符的运算优先级 低于关系运算符和算术运算符,高于赋值符。低于关系运算符和算术运算符,高于赋值符。 因此因此 max=(ab)?a:b可以去掉括号而写为可以去掉括号而写为 max=ab?a:b 条件运算符条件运算符? :是一对运算符,不能分开单独使用。:是一对运算符,不能分开单独使用。 条件运算符的结合方向是自右至左。条件运算符的结合方向是自右至左。 例如:例如:ab?a:cd?c:d 应理解为应理解为 ab?a:(cd?c:d) 条件表达式常常用在只执行单个的赋值语句时,不但使程条件表达式常常用在只执行单个的赋值语句时,不但使

18、程序简洁,也提高了运行效率。序简洁,也提高了运行效率。注意以下几点:注意以下几点:例例. 输入一个字符,若为大写字母,是则转换成小写,输入一个字符,若为大写字母,是则转换成小写,否则不转换否则不转换main() char ch; scanf(%c,&ch); ch=(ch=a & ch =z)? ch+32:ch; printf(%c,ch);1.switch1.switch语句使用的一般形式为:语句使用的一般形式为:switch(表达式表达式) case 常量表达式常量表达式1: 语句语句1; case 常量表达式常量表达式2: 语句语句2; case 常量表达式常量表达式n: 语句语句n;

19、 default : 语句语句n+1; switch语句语句 先计算表达式的值,并逐个与其后的常量表达式值相先计算表达式的值,并逐个与其后的常量表达式值相比较;比较; 当表达式的值与某个常量表达式的值相等时,即执行当表达式的值与某个常量表达式的值相等时,即执行其后的语句;其后的语句; 然后不再进行判断,继续执行后面所有然后不再进行判断,继续执行后面所有case后的语句;后的语句; 如表达式的值与所有如表达式的值与所有case后的常量表达式均不相同时,后的常量表达式均不相同时,则执行则执行default后后的语句。的语句。 语句的执行过程语句的执行过程:void main() char grad

20、e; printf(input your mark: ); scanf(%c,&grade); switch (grade) case a: printf(“85100n); case b: printf(“7084n); case c: printf(“6069n); case d: printf(“60 n); default: printf(errorn); 程序运行时输入程序运行时输入 a ,其输出结果是什么?,其输出结果是什么?例例 如如 在在switch语句中,语句中,“case 常量表达式常量表达式”只相当于一个语句只相当于一个语句标号,表达式的值和某标号相等则转向该标号执行,但

21、不能标号,表达式的值和某标号相等则转向该标号执行,但不能在执行完该标号的语句后自动跳出整个在执行完该标号的语句后自动跳出整个switch 语句,将继续语句,将继续执行所有后面执行所有后面case语句的情况。语句的情况。 为了避免上述情况,语言还提供了一种为了避免上述情况,语言还提供了一种break语句,专语句,专用于跳出用于跳出switch语句。语句。 break 语句使用形式为:语句使用形式为: break; 在每一在每一case语句之后增加语句之后增加break 语句,语句, 使每一次执行之后使每一次执行之后均可跳出均可跳出switch语句,从而避免输出不应有的结果。语句,从而避免输出不应

22、有的结果。 说说 明明switch(表达式表达式) case 常量表达式常量表达式1: 语句语句1; break; case 常量表达式常量表达式2: 语句语句2; break; case 常量表达式常量表达式n: 语句语句n; break; default : 语句语句n+1; 使用使用switch语句的通常形式为:语句的通常形式为:void main() char grade; printf(input your mark: ); scanf(%c,&grade); switch (grade) case a:printf(“85100n);break; case b2:printf(“7084n); break; case c:printf(“6069n); break; case d:printf(“60n); break; default: printf(errorn); 例题修改如下:例题修改如下:1.在在case后的各常量表达式的值不能相同,否则会出后的各常量表达式的值不能相同,否则会出现

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论