第04章 分支结构.ppt_第1页
第04章 分支结构.ppt_第2页
第04章 分支结构.ppt_第3页
第04章 分支结构.ppt_第4页
第04章 分支结构.ppt_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1、第,章,4,分 支 结 构,语句概述,问题的引出,if语句的嵌套,switch语句,if语句,C语言的语句可以分为五大类: 1. 表达式语句: 表达式的后面加一个分号 赋值语句。 自加减运算符构成的表达式语句。 逗号表达式语句 注:有些表达式语句是没有意义的。如: x+y;ab?a:b; 2. 空语句: 只有一个分号,作为语句结束符(计算机什么也不做) 3复合语句:由“”和“”把一些变量说明和 语句组合在一起 ,又称语句块。如: int a=3,b=10,sum; sum=a+b; printf(”%d”,sum); ,第,章,4,分 支 结 构,语句概述,问题的引出,if语句的嵌套,swit

2、ch语句,if语句,注: 1) 复合语句本身是一个完整的语句,它不以分号作为结束符。“”后加了分号相当于多了一个空语句。对这种情况,有时对程序流程没有影响,但有时会改变程序流程。 复合语句内通常有多个语句,但它整体上是作为一个语句看待。 在程序中凡是可以出现语句的地方都可以使用复合语句。它通常出现在控制语句(选择、循环)中作为子句或循环体。,第,章,4,分 支 结 构,语句概述,问题的引出,if语句的嵌套,switch语句,if语句,函数调用语句:由一个函数调用加上一 个分号组成,如: printf(”This is a function call”); 5. 控制语句,共有9种,即: if语

3、句 switch语句 while语句 do-while语句 for语句 break语句 continue语句 goto语句 return语句,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,【例4.1】给出圆的半径r、高度h,求圆柱体体积和圆柱体全面积 。 #include main() float r,h,v,s; r=1.5; h=2; v=3.14*r*r*h; s=2*3.14*r*(h+r); printf(”圆柱体体积为%8.2f n圆柱体全面积为%8.2fn”,v,s); 运行结果: 圆柱体积为 14.13 圆柱全面积为 32.97,

4、执行顺序,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,此结构属于顺序结构,程序自上而下执行, 程序中的每一个语句都被执行一次,而且只能被执行一次。 然而,只有顺序结构,无法编制出更复杂、功能更强的程序,计算机经常要根据某些条件进行逻辑判断,以决定进行不同的处理。这种结构叫选择结构或分支结构。为此,C语言提供了进行分支判断的语句。,C语言提供两种分支判断语句: if语句 switch语句,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,算法和流程图,沃思: 程序=数据结构+算法 实际上:程序=算法+数

5、据结构+程序设计方法+ 语言工具和环境,算法:广义地说,为解决一个问题而采取的方法和步骤。 计算机算法分类:数值运算算法、非数值运算算法。,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,算法的特性:,有穷性:操作步骤有限、计算机执行用时合理。 确定性:每一步骤不能含糊、不能模棱两可。 有零个或多个输入。程序的功能实际上是: 数据输入数据处理数据输出 有一个或多个输出。没有输出的算法是没有意义的。 有效性:每一个步骤应当能有效地执行,并得到确定的结果。,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,算

6、法的表示方法:,用自然语言表示算法。 用流程图表示算法。基本流程图符号 用NS流程图表示算法。全部算法写在一个矩形框内,没有流程线,框内还可包含其它的框。 用伪代码表示算法。介于自然语言和计算机语言之间的文字和符号来描述算法。 用计算机语言表示算法。算法的最终实现。,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,流程图的基本图形符号:,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,程序设计有三种基本结构: 顺序结构、选择结构、循环结构,顺序结构的流程图:,选择结构和循环结构的流程图后面陆续介绍。,第

7、,章,4,分 支 结 构,语句概述,问题的引出,if语句,switch语句,4.3.1 if语句的一般形式,4.3.2 if语句的缺省形式,4.3 if语句,4.3.3 较复杂的条件表达式,if语句的嵌套,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,if语句的一般形式: if () else 注: 内的表示是可选的 。,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,流程图:,作用:实现二分支结构,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,【例4.

8、2】某种商品单价2.5元,买50个以上可以打9折。输入购买的数量,计算出总价格。 #include main() int n;/*商品数量*/ float price,amount;/*单价和总价*/ price=2.5; printf(”请输入商品数量:”); scanf(”%d”, ,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,该程序执行的过程是: 判断商品数量, 数量大于等于50,执行语句A; 数量小于50,执行语句B。,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,【注意】 (1)if后面

9、的一定要有括号。 (2)if和else同属于一个if语句,程序中不可以没有if而只有else。 (3)if语句与else语句不可能同时执行。 (4) if语句中的各子句必须用分号结束,若子句是由多个语句组成,必须写成复合语句(用 括住),“”后不能再加“;” (5)if语句的表达式可以是任意类型的 C语言的合法的表达式,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,例1:,if (ab) printf(“%dn”,a); printf(“%dn”,b);,if (ab) printf(“%dn”,a); printf(“%dn”,b);,不同于,

10、第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,例2:,if (ab) printf(“%dn”,a); printf(“%dn”,b); else printf(“%dn”,b); printf(“%dn”,a); 编译出错!(else没有if配对),if (ab) printf(“%dn”,a); printf(“%dn”,b); else printf(“%dn”,b); printf(“%dn”,a); 正确!,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,例3:,if (ab) printf

11、(“%dn”,a); printf(“%dn”,b); else printf(“%dn”,b); printf(“%dn”,a); 错误!,相当于多了一个空语句,从而else没有if配对。,若在此处添加一个“;”号,则没有影响。,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,缺省条件语句形式: if () 执行过程:如果的值不为零, 执行,否则什么也不执行,跳 到if语句的下面,继续执行程序中的其 它语句。缺省else时的条件分支语句, 也 经常使用。,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套

12、,作用:实现单分支,流程图:,实际上是二分支中的另一分支为空,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,【例4.3】编程将用户输入的24小时制时间转换成12小时制输出。 #include main() int hour,minute; char noon; noon=A; printf(“请输入24小时制时间:”); scanf(“%d:%d”, ,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,运行结果: 请输入24小时制时间:18:30 12小时制时间为4:30P 请输入24小时制时间:8:1

13、4 12小时制时间为8:14A 因为输入的24小时制时间为18:30,使得hour=18,minute=30,则if的条件表达式hour12为真,条件成立,所以进行时间转换。,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,【例4.4】判断某一年是否为闰年。 判断闰年的条件: 能被4整除,但不能被100整除 或 能被400整除 程序: #include ”stdio.h” main() int year; scanf(”%d”, ,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,判断闰年的两个条件是用一

14、个逻辑表达式来表示的,若表达式的值为真,则year为闰年,否则为平年。,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,4.4.1 嵌套的引出,4.4.2 算法和流程图,4.4 if语句的嵌套,4.4.3 if语句嵌套形式的多样性,4.4.4 if与else的配对规则,if语句的嵌套,4.4.5 嵌套举例,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,【例4.6】猜数程序,和预定的数比较,并给出相应的提示。 #include main() int number=200; int i; scanf(“%d”, ,一个

15、完整 的if 语句,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,程序中供选择的情况多于两个时使用两个以上if语句来进行判断。 if语句的嵌套:在一个if语句中 包含另一个if语句 内嵌的if语句既可以嵌套在if子句中, 也可以嵌套在else子句中。,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,if语句嵌套的一般形式:,if( ) if( )语句1 else 语句2 else if( )语句3 else 语句4,由if子句和else子句是否是if语句,可形成多种形式的if语句嵌套。如:if-els

16、e-if形式、if-if-else形式。,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,if-else-if的嵌套形式:,if(表达式1) 语句1 else if(表达式2)语句2 else if(表达式3)语句3 else if(表达式n)语句n else 语句n+1,实现多分支结构,实际上else子句又是一个if 语句。,第,章,4,分 支 结 构,if-else-if的嵌套形式的流程图:,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,if与else的配对规则:,else与前面最接近而又没有和其

17、它else配对的if语句配对。 要改变配对关系,可使用 构成复合语句。(当然此时if和else的数目不一样),例如:,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,【例4.7】分析下面程序完成什么功能。if语句如何嵌套。 #include main() int x,y; scanf(%d, ,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,上例是求:,/*if-else- if 形式*/ if(x0) y=-1; else if(x=0) y=0; else y=1;,/*不嵌套的if 语句*/ if

18、 (x0) y=1;,/*if- if -else形式*/ if (x=0) if (x0) y= -1; else y=0; else y=1;,/*if- if -else形式*/ y= -1; if (x=0) if (x0) y=1; else y=0;,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,【例4.9】写出下列程序的输出结果。 #include main() char ch; int score; score=100; ch=B; if(score=90) if(ch=A) printf(”excellent”); else p

19、rintf(”You should work harder!”); ,运行结果: You should work harder!,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,【例4.10】根据成绩打印出等级。059为D,6079为C,8089为B,90100为A。,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,#include main() int score; char grade; printf(“请输入成绩:”); scanf(“%d”, ,第,章,4,分 支 结 构,语句概述,问题的引出,

20、switch语句,if语句,if语句的嵌套,switch语句的一般形式是: switch () case : case : : : case : default: ,虽然多分支选择可由嵌套的if语句实现,但有时程序结构不够简洁。对有些特殊的多分支结构可由switch语句实现。,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,switch语句的流程图:,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,switch语句的执行过程:,根据switch表达式的值,当其值与某一个case后面的常量表达式的值相等时

21、,就执行此case后面的语句,直至switch 语句的结束,为了不再执行此case后面的其它case和default语句,可用break语句中断switch语句,使流程跳到switch语句后面。 当switch表达式的值,不与任一个case后面的常量表达式的值相等时,就执行defaut后面的语句。,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,通常switch语句一般形式为: switch(表达式) case 常量表达式1:语句1;break; case 常量表达式2:语句2;break; case 常量表达式n:语句n;break; default:语句n+1 ,第,章,4,分 支 结 构,语句概述,问题的引出,switch语句,if语句,if语句的嵌套,第,章,

温馨提示

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

最新文档

评论

0/150

提交评论