程序流程控制精品课件_第1页
程序流程控制精品课件_第2页
程序流程控制精品课件_第3页
程序流程控制精品课件_第4页
程序流程控制精品课件_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、程序流程控制1第1页,共26页,2022年,5月20日,11点56分,星期五4.1 算法数据结构算法程序数据结构算法程序设计方法语言环境程序4.1.1 算法的概念算法的五个特性:有穷性、确定性、可行性、输入、输出。算法设计注意:正确性、可读性、健壮性、高效性。2第2页,共26页,2022年,5月20日,11点56分,星期五4.1.2 算法的组成要素1、 操作: 包括算术运算、逻辑运算、关系运算、函数运算、位运算、I/O操作等。2、 控制结构: 控制算法中各个操作的执行顺序。 三种基本控制结构是: 顺序结构(顺序执行) 选择结构(比较判断) 循环结构或称重复结构(反复执行)3第3页,共26页,2

2、022年,5月20日,11点56分,星期五4.1.3 算法的描述自然语言流程图N-S图PAD图伪代码语句2语句1语句1语句2判断YN语句4第4页,共26页,2022年,5月20日,11点56分,星期五3. 复合语句一般形式: 内部数据说明部分; 执行语句部分; 2. 表达式语句 运算符表达式语句:计算表达式的值。 函数调用表达式语句:调用函数。4.2 C语言的基本语句声明语句用于声明合法标识符(变量名或函数名),可在函数体或复合语句中使用,且须写在其他语句前面。例:x=(a+3)*b;a=sin(x);y=x+;例如: int a,b ; double x,y,z ;5第5页,共26页,202

3、2年,5月20日,11点56分,星期五空语句只有分号组成的语句,什么也不执行。流程控制语句条件判断语句 if语句、switch语句。循环执行语句 dowhile语句、while语句、for语句。流程转向语句 break语句、goto语句、continue、语句return语句。如:main( ) int a=1,b=4; . int b; b=3; printf(“%dn”,a+b); printf(“%d”,a+b); 输出:4 5说明: 后不加分号。 语法上和单一语句相同。 复合语句可嵌套。 复合语句中的变量只在本部分有效。6第6页,共26页,2022年,5月20日,11点56分,星期五4

4、.3 顺序结构顺序结构程序由简单语句组成,程序流程如图3.1 所示,语句按书写顺序执行,先执行A,再执行B。BA顺序结构执行流程例:main( ) int a,b=4; a=b*2; printf(“%d”,a);7第7页,共26页,2022年,5月20日,11点56分,星期五4.4 选择结构4.4.1 ifelse语句结构形式: if (表达式) 语句1; else 语句2;执行过程:先判断表达式,成立就执行语句1,否则执行语句2。例: if (xy) max=x; else max=y;注意: ifelse中表达式可为关系表达式、逻辑表达式、数值表达式。 ifelse中语句1、语句2可以为

5、简单语句或复合语句。 ifelse中分号的使用位置。表达式语句1真假语句2双分支选择8第8页,共26页,2022年,5月20日,11点56分,星期五4.4.2 if语句结构形式: if (表达式) 语句;执行过程:先判断表达式,若成立则执行语句,否则跳 过该语句而直接执行该结构后的下一条语句。注意:此处,不管分支语句是否执行,if 后的表达式一定执行。表达式语句真假单分支选择例: main( ) int a=1,b=3,max; max=a; if(a=90) grade=A; else if (score=80) grade=B; else if (score=70) grade=C; el

6、se if (score=60) grade=D; else grade=E; 10第10页,共26页,2022年,5月20日,11点56分,星期五4.4.4 if语句的嵌套当if(表达式)或else后面的语句本身又是一个if语句结构时,就形成了if语句的嵌套结构。一般形式: if ( 表达式1) if ( 表达式1_2) 语句1_1 else 语句1_2else if ( 表达式2_1) 语句2_1 else 语句2_2注意:当程序中存在嵌套的if .else结构时,每个else都与其前面最近的 if 配对,由内层向外层逐步处理。11第11页,共26页,2022年,5月20日,11点56分,

7、星期五if (expr1) if (expr2) statement1 else statement2else if(expr3) statement3 else statement4内嵌if内嵌ifif (expr1) if (expr2) statement1 else statement2内嵌ifif (expr1) if (expr2) statement1 else statement3 内嵌ifif (expr1) statement1else if(expr3) statement3 else statement4内嵌if例如:12第12页,共26页,2022年,5月20日,11

8、点56分,星期五if (zy) if (zx) max = z; else if (yx) max=y;if (zy) if (zx) max=z; else if (yx) max=y; 二者有何区别?13第13页,共26页,2022年,5月20日,11点56分,星期五4.4.5 switch语句结构一般形式:执行过程:switch( 表达式) case E1: 语句组 1; case E2: 语句组 2; . case En: 语句组 n; default : 语句组 ;switch表达式语句组1语句组2语句组n语句组.E 1E 2Endefaultcase 例:switch ( i )

9、case 1:printf( “An”); break; case 2:printf( “Bn”); break; case 3:printf( “Cn”); break; case 4:printf( “Dn”); break; default:printf( “En”); 14第14页,共26页,2022年,5月20日,11点56分,星期五4.5 循环结构循环控制:记数法和标志法。4.5.1 穷举与迭代算法穷举问题所涉及的情况。答案需要满足的条件。迭代确定迭代变量。建立迭代关系式。对迭代工程进行控制。15第15页,共26页,2022年,5月20日,11点56分,星期五4.5.2 while

10、语句一般格式: while (循环条件表达式) 循环体语句;执行过程:先计算循环条件表达式的值,若为真则执行循环体语句,重复上述过程,直到循环条件表达式的值为假时,循环结束。注意:先判断,后执行。循环条件表达式只要其值非0,就可以执行循环体。循环体由多个语句组成时,须用花括号形成复合语句。为使循环最终能结束,每执行一次循环体,循环条件 表达式的值应趋于0变化。如果表达式的值一开始就为0,则语句一次也会被不执行。# include “stdio.h”main( ) int i,sum=0; i=1; while(i=100) sum=sum+i; i+; printf(%d,sum);16第16

11、页,共26页,2022年,5月20日,11点56分,星期五4.5.3 dowhile语句一般格式: do 循环体语句; while ( 循环条件表达式);执行流程:先执行循环体语句,然后对循环条件表达式进行计算,若其值为真则重复上述过程,直到循环条件表达式的值为假时,循环结束。注意:如果表达式的值一开始就为0,也会执行一次语句,此处 异于while语句。循环控制变量值在循环体内必须有所改变。# include “stdio.h”main( ) int i,sum=0; i=1; do sum+=i;i+; while(i=100); printf(%d,sum);17第17页,共26页,202

12、2年,5月20日,11点56分,星期五4.5.4 for语句一般形式: for (表达式1;表达式2;表达式3) 循环体语句;其中:表达式1常用于给循环变量赋初值,可选。表达式2是循环条件,可选。表达式3常用来修改循环变量的值,可选。expr2循环体假(0)真(非0)forexpr1expr3说明: for语句中三个表达式 的类型任意,自身都可省略,但 分号不可省。 无限循环: for(;) for语句可以转换成while结构。表达式1;while(表达式2)循环体语句;表达式3;# include “stdio.h”main( ) int i,sum=0; for(i=1;i=100;i+)

13、 sum+=i; printf(%d,sum);18第18页,共26页,2022年,5月20日,11点56分,星期五例:main( ) int i,sum=0; for(i=1;i=100;i+) sum+=i; printf(“%d”,sum); 例:main( ) int i=1,sum=0; for(;i=100;i+) sum+=i; printf(“%d”,sum); 例:main( ) int i=1,sum=0; for(;i100) break; /* 如果 i100,则退出循环*/ printf(“sum=%d”,sum);本程序中,当i100时,强行终止for循环,继续执行

14、for语句下一条语句。21第21页,共26页,2022年,5月20日,11点56分,星期五2. continue语句语句形式:continue;作用:使本次循环提前结束,即跳过循环体中尚未执行的循环体语句,但不结束整个循环,而继续进行下一次循环的条件判别以决定是否进入下一次循环。说明:仅用于循环语句中。3.函数的调用和返回作用: 使程序流程转向被调用函数,而函数返回语句return的功能是使流程从被调用函数返回主调函数。22第22页,共26页,2022年,5月20日,11点56分,星期五例:显示输入的字符, 如果按的是Esc键, 则退出循环; 如果按的是Enter键, 则不做任何处理,继续输入

15、下一个字符。#include main( ) char ch; for (;) ch=getchar( ); /*字符输入函数 */ if (ch=27) /* Esc键的ACSII码为27*/ break; /*退出循环*/ if (ch=13) continue; /*按的是Enter键,跳过字符输出语句*/ putchar(ch); /*显示输入的字符*/ getchar( ); /*让程序停一下,拍任意键继续*/23第23页,共26页,2022年,5月20日,11点56分,星期五4. goto语句goto语句被称为无条件转移语句,由两部分组成:goto 标号; 和 标号: 语句其中:标

16、号必须是一个合法的标识符,把它放在一个语句前面,后跟一个冒号,表示程序流程将转向此语句。注意:goto语句和break语句相比最大的好处是可以一下跳出多重循环,但不能从外面跳入循环体内。goto语句应有限制地进行使用。main() int sum=0, n=1; loop: if (n=100) sum+=n; n+; goto loop; printf(“%dn”,sum);24第24页,共26页,2022年,5月20日,11点56分,星期五4.5.6 循环结构的嵌套循环的嵌套:在循环体语句中又有另一个完整的循环结构的形式。内循环:嵌套在循环体内的循环语句。外循环:外面的循环语句。多层循环:内循环体中又有嵌套的循环语句。注意:内循环必须被包含在外层循环的循环体中,不允许出现内外层循环体交叉的情况。嵌套循环的跳转,禁止:从外层跳入内层;跳入同层的另一循环;向上跳转。(1) while() while() . (2) do do while( ); . while( );(3) while() do while( );

温馨提示

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

评论

0/150

提交评论