第8章 条件判断——分支结构.ppt_第1页
第8章 条件判断——分支结构.ppt_第2页
第8章 条件判断——分支结构.ppt_第3页
第8章 条件判断——分支结构.ppt_第4页
第8章 条件判断——分支结构.ppt_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、第8章 条件判断分支结构,3种基本控制结构中,顺序结构是最简单的一个,只要沿着指定的语句序列一路向下即可,无须选择、拐弯或者折回,而分支结构和循环结构相对要复杂一点,分支结构涉及从多条岔路中选择合适的语句执行,而循环结构则会重复执行某块语句,也就是说,在执行完后还要折回,再次执行,本章主要讨论几种常见的分支结构和它们的用法。,8.1 简单的条件判断if语句,生活中充满了选择,在C语言编程过程中同样如此,最简单的条件判断语句是if语句,其基本格式为: if( 判断表达式 ) 结构体; 下面来具体看一下上述代码的意义。,8.1.1 判断表达式,判断表达式可以是简单的逻辑语句(逻辑表达式或关系表达式

2、),也可以是多个逻辑语句的“与”、“或”、“非”组合,也可以是一般表达式,甚至还可以是一个变量或常量,执行到if结构时,该表达式的值被首先计算,当判断表达式的值不为0(真)时,if后花括号中的结构体代码被执行,否则,跳过花括号中的代码。做个形象的比方,在街上购物的时候,看到某件商品,常常会这样想:“如果不高于50块,就买下了”,否则,就继续逛街,用if结构可表述为: if ( 该商品价格 50 ) 买下它; ,8.1.2 花括号和if结构体,if结构后的花括号并非必须,if结构后的花括号实际上是个“块语句”,如果没有花括号,则此时默认的“块语句”只包含紧跟在if后的一条语句,试比较: if(

3、表达式 ) 语句1; 语句2; 语句3; 和 if( 表达式 ) 语句1; 语句2; 语句3;,8.2 两条岔路的选择if else结构,还是拿买东西做比方,口袋里只有50块,想买一件衣服,A、B两款看着都不错,B款标价39,A款的价格标签不见了,但从做工和质地看来,A款明显要好一点,这时,你也许会在心里盘算,问一下A款的价格,如果价格低于50,就买A款,否则,就买B款,这种“两条岔路中选一个”的流程,在C语言中对应着if else结构。,8.2.1 关键在else,对进行改写,使用if else结构,如所示。 代码 if else结构用法示例IfElseSample #include /*使

4、用printf要包含的头文件*/ #include void main(void)/*主函数*/ int price=0;/*声明一个int型变量,代表商品价格*/ printf(请输入商品的价格(正整数):);/*提示输出信息*/ scanf(%d,/*按任意键结束程序,等待*/ ,8.2.2 if else结构体,if else结构的标准形式可写为: if ( 表达式 ) 代码段1 else 代码段2 当程序流程来到if else结构时,首先计算关键字if后“表达式”的值,如果表达式的值为“真”(不为0),代码段1被执行,否则,else关键字后的代码段2被执行。 和前面介绍的if结构类似,

5、在if else结构中,“if(表达式)”和else后的代码段均为块语句,需要使用花括号将代码段包裹起来,当然,如果是只有一条语句的代码段,花括号可以省略,如中的if else结构也可以写为如下形式: if(price50)/*如果输入小于50*/ printf(好,买了);/*买下*/ else printf(太贵了,算了);/*不买*/,8.3 多分支语句和分支语句嵌套,讲过了“2选1”,那如果出现“3选1”、甚至是“N选1”怎么办?可使用多分支语句和分支语句嵌套,此外,C语言还提供了开关语句switch,这是一种特殊的选择分支结构,稍后一节会讨论switch的用法,本节来看一下分支语句嵌

6、套的问题。,8.3.1 多分支,用实例说明似乎更好理解,假设需要编制一个程序,根据学生的得分判定其类别,具体是:少于60分判D(不及格),60到74为判为C(一般),75到89判为B(良好),大于等于90判为A(优秀),刚学习分支结构的读者的代码可能如所示。 代码 多个If结构并列判断ParallelIf #include /*使用printf要包含的头文件*/ #include void main(void)/*主函数*/ int mark=0;/*声明一个int型变量,代表学生成绩*/ printf(请输入该学生的成绩:n);/*提示输出信息*/ scanf(%d,/*按任意键结束程序,等

7、待*/ ,8.3.2 多分支if结构,多分支if结构可看作是对if else结构的一种补充,可用其对多个条件进行判断,并在条件成立时立即执行相应的语句。多分支if结构的基本格式为: if (表达式1) 代码段1 else if (表达式2) 代码段2 else if (表达式3) 代码段3 else if (表达式m) 代码段m else 代码段m+1 ,8.3.3 分支语句嵌套,当if(或if else)结构中的执行语句又是if(或if else)结构时,称为分支语句嵌套。分支语句嵌套的样式有万千种,不可能一一列举,举个简单例子来看: if (表达式1) if (表达式2) 代码段1 els

8、e 代码段2 上述代码的是在if结构内嵌套了if else结构,首先计算表达式1的值,如果其值为假(0),直接跳出该结构,代码段1和代码段2都不会被执行,如果其值为真(非0),则执行内部的if else结构,计算表达式2的值,如果其值为真,执行代码段1,否则,执行代码段2。,8.4 开关语句switch结构,用多分支if结构和if结构嵌套都可实现“多选1”,但带来的负面影响是程序的可读性,面对一大推的if和if else搅和在一起,很多读代码的人都会觉得头皮发麻,要耐心地去“脱壳”,实际上,C语言还提供了另一种更简洁的多分支结构,即switch结构。,8.4.1 一般形式,switch结构的一

9、般形式为: switch(表达式) case( 常量表达式1 ): 代码段1 break; case( 常量表达式2 ): 代码段2 break; case( 常量表达式3 ): 代码段3 break; case( 常量表达式m ): 代码段m break; default: 代码段m+1 break; ,8.4.2 为什么叫开关语句,把中的break都删除或注释掉后,编译链接并不会出错,只是执行时,结果不太一样,比如,如果用户输入3,程序的愿意是输出Wednesday,可实际的输出如下: 请输入一个1到之间的整数: 3(键盘输入) Wednesday Thursday Friday Satu

10、rday Sunday 请检查输入是否正确 这就是说,如果不使用break语句,那么从与表达式的值匹配的那个case语句开始后的所有代码段都会被执行,每个case语句相当于入口、开关或者说是进入的钥匙,这便是开关语句这个名称的由来。,8.4.3 default语句,当所有case常量表达式与switch后表达式的值都不匹配时,default语句被执行,实际上,default语句也不是必须的,当default语句省略时,表示“缺省情况下什么也不做”。某些编译器可能会对default语句的缺失给出警告,从防错意义上说,即使什么也不做,最好也把default语句写上,采用下述形式: default: ;/*(空语句。不要忘记分号)*/ default语句并不一定放在switch结构的最后,default语句和各个case语句的顺序完全可互换而不影响结果,当default语句不在switch结构的最后时,不要忘记使用break。,8.4.4 if结构和switch结构之比较,switch结构只进行相等与否的判断,而ifelse结构还可以进行大于小于等范围上的判断。此外,switch无法处理浮点数,只进行整数的判断,而且,case标签值必须是常量,如果涉及到浮点数和变量的判断,应当使用ifelse结构。应当从可读性和程序效率多方面综

温馨提示

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

最新文档

评论

0/150

提交评论