3 程序控制结构(第2讲)fzhh.ppt_第1页
3 程序控制结构(第2讲)fzhh.ppt_第2页
3 程序控制结构(第2讲)fzhh.ppt_第3页
3 程序控制结构(第2讲)fzhh.ppt_第4页
3 程序控制结构(第2讲)fzhh.ppt_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、2020/9/23,1,程序控制结构,第三章第2讲 分支结构,2,2020/9/23,本章要点,什么是分支结构?它的作用是什么? 分支结构两种形式 if()else语句 switch() 语句,分支结构,3,2020/9/23,回顾 6.5.3 关系表达式,比较两个操作数,比较的结果:真(1)、假(0) x y x = y x != y 优先级 算术运算符 = = != 赋值运算符 左结合,a b = c ch a + 1 d = a + b c 3 = x = 5,等价于 (a b)= c 等价于 ch (a + 1) 等价于 d= (a + b) c) 等价于(3 = x) = 5,1、关

2、系运算符,4,2020/9/23,回顾 6.5.4 逻辑表达式,逻辑运算符: else 语句2;,if (表达式) 语句1;,1.普通流程图及形式,7,2020/9/23,if (表达式) 语句1; else 语句2;,if (表达式) 语句1;,2.N-S流程图及形式,8,2020/9/23,3. 实例1 判断数字的奇偶性,例3-7 输入1个整数,判断该数是奇数还是偶数。,分析:满足偶数的条件是:number % 2 = 0,9,2020/9/23,源程序-判断数字的奇偶性,#include int main(void) int number; printf(Enter a number:

3、); scanf(%d, ,Enter a number: 329 Tne number is odd.,Enter a number: 1028 Tne number is even.,10,2020/9/23,3. 实例2 求绝对值,例3-8 输入1个整数,输出它的绝对值 。,分析:当number = 0时,?,11,2020/9/23,源程序-求绝对值,#include int main(void) int number; printf(Enter a number: ); scanf(%d, ,Enter a number: 10 The absolute value is 10.,E

4、nter a number: -300 The absolute value is 300.,12,2020/9/23,3.2 多分支结构与嵌套的 if 语句,多分支结构有多种形式 实现方法: 嵌套的 if 语句 else if 语句-在else中嵌套 嵌套的 if - else语句-在if中嵌套 switch语句,13,2020/9/23,分段计算水费,例3-3 分段计算水费,流程图如下页所示,14,2020/9/23,y=0,x0,x=15,y=4*x/3,y=2.5*x-10.5,x=15,y=2.5*x-10.5,x0,y=0,y=4*x/3,if(x0) y=0; else if(x

5、15) y=4*x/3; else y=2.5*x-10.5;,if(x15) if(x0) y=0; else y=4*x/3; else y=2.5*x-10.5;,15,2020/9/23,if(x0) y=0; else if(x15) y=4*x/3; else y=2.5*x-10.5;,if(x15) if(x0) y=0; else y=4*x/3; else y=2.5*x-10.5;,x =15,真,假,y=0;,y=2.5*x -10.5;,真,假,x 0,y=4*x/3;,if (表达式1) 语句1; else if(表达式2) 语句2; else if(表达式n-1)

6、 语句n-1; else 语句n;,else if 语句,n个分支需要n-1次比较,if(表达式1) if(表达式2) 语句1; else 语句2; else if(表达式3) 语句3; else 语句4;,嵌套的 if else 语句,17,2020/9/23,画出流程图,写出对应程序段,2种嵌套if语句的比较,1 2 3 4 5 6 7,2种嵌套if语句的比较,20,2020/9/23,else 和 if 的匹配,if(表达式1) if(表达式2) 语句1; else 语句2 ; else if(表达式3) 语句3; else 语句4;,if(表达式1) if(表达式2) 语句1; els

7、e /*与哪一个if匹配?*/ if(表达式3) 语句3; else 语句4;,else 与最靠近它的、没有与别的 else 匹配过的 if 匹配,if(表达式1) if(表达式2) 语句1 else if(表达式3) 语句3 else 语句4,21,2020/9/23,改变 else 和 if 的配对,例3-10 改写下列 if 语句,使 else 和第1个 if 配对。 if (x2) if(x1) y =x+1; else y =x+2;,使用花括号,构造一个复合语句。 if (x 2) if(x1) y =x+1; else y =x+2;,增加空的else。 if (x2) if(x

8、1) y =x+1; else; else y = x + 2;,每条语句的执行条件?,22,2020/9/23,小练习 有以下程序 #include int main() int x,y,z; x=1;y=2;z=3; if(xy) if(yz) printf(%d,z); elseprintf(%d,y); printf(%dn,x); 程序的运行结果是,23,2020/9/23,3.2.2 switch语句,输出以下数学函数的值:,考虑一下用if-else语句如何实现? 该问题分支较多,用嵌套的if语句层数多,程序可读性降低。 比较的条件具有确定值,C语言提供switch语句直接处理多分

9、支选择。,24,2020/9/23,if(x=0) y=0; else if(x=1) y=1; else if(x=2) y=2; else y=2x;,switch(x) case 0:y=0; case 1:y=1; case 2:y=2; default:y=2x; ,25,2020/9/23,3.2.2 switch语句,处理多分支选择问题,3种情况,是否使用break 1、在switch语句的每个语句段中都使用break语句 switch(表达式) case 常量表达式1:语句段1; break; case 常量表达式2:语句段2 ; break; . case 常量表达式n:语句

10、段n ; break; default : 语句段n+1 ; break; ,只执行一个语句段,即多选一结构,break可用于退出switch结构,26,2020/9/23,求解简单表达式,例3-5 输入一个形式如“操作数 运算符 操作数”的四则运算表达式,输出运算结果。 例如: 输入:3.1+4.8 输出:7.9 输入:4*9 输出:36.0,27,2020/9/23,分析过程,定义变量:两个操作数、一个操作符、运算结果。 初始化:输入两个操作数、一个操作符。 计算、数据处理:但在写程序时,运算符是什么不知道的,而结果跟运算符密切相关,因此要采用分支结构,分支的标准是不同的运算符号。 输出。

11、,28,2020/9/23,源程序,Type in an expression: 3.1+4.8 =7.9,# include int main(void) char operator; double value1, value2; printf(Type in an expression: ); scanf(%lf%c%lf, ,如果除数为0?,29,2020/9/23,2、在switch中不使用break,switch(表达式) case 常量表达式1:语句段1; case 常量表达式2:语句段2; . case 常量表达式n:语句段n; default : 语句段n+1; ,若某个 ca

12、se 常量表达式与switch中表达式值相等,执行完其所属语句段后,其后所有的语句段都会被执行。,30,2020/9/23,3、在switch的某些语句段中使用break,switch(表达式) case 常量表达式1:语句段1;break; case 常量表达式2:语句段2; . case 常量表达式n:语句段n;break; default : 语句段n+1; ,找到与switch表达式值相符的case后,执行它所属的语句段,顺序执行后面的case的语句段,直到遇到break为止,31,2020/9/23,例3-6 输入10个字符,分别统计出其中空格或回车、数字和其他字符的个数。,分析:

13、字符 、字符n、字符数字0、1、2、3、4、5、6、7、8、9,其它字符。 1)定义变量ch(char类型),各类字符的个数; 2)赋初值:输入一个字符 3)处理过程:统计,如果是空格,空格个数+1,如果是回车,回车个数+1,依次类推。 4)再输入一个字符 ,即返回2),直到输入并判断了10个字符 5)输出各类字符的个数。,32,2020/9/23,int main(void) int blank, digit, i, other; char ch; blank = digit = other = 0; printf(Enter 10 characters: ); for(i = 1; i =

14、 10; i+) ch = getchar(); switch (ch) case : case n: blank +; break; case 0 : case 1 : case 2 : case 3 : case 4 : case 5 : case 6 : case 7 : case 8 : case 9 : digit +; break; default: other +; break; printf(blank=%d, digit=%d, other=%dn, blank, digit, other); return 0; ,Enter 10 characters: Reold 123? blank=1, digit=3, other=6,33,2020/9/23,1. 如果color值为R,那么下面这个随便构造的switch语句会打印出什么? switch(color) case R: printf(redn); case B: printf(bluen); case Y: printf(yellown); ,练习题,34,2020/9/23,2.有以下程序 int main(void) int i

温馨提示

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

最新文档

评论

0/150

提交评论