《程序流程控制精.ppt》由会员分享,可在线阅读,更多相关《程序流程控制精.ppt(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、程序流程控制1第1页,本讲稿共26页4.1 算法算法数据结构算法程序数据结构算法程序数据结构算法程序数据结构算法程序数据结构算法程序设计方法语言环境程序数据结构算法程序设计方法语言环境程序数据结构算法程序设计方法语言环境程序数据结构算法程序设计方法语言环境程序4.1.1 4.1.1 算法的概念算法的概念算法的概念算法的概念算法的五个特性:算法的五个特性:算法的五个特性:算法的五个特性:有穷性、确定性、可行性、输入、有穷性、确定性、可行性、输入、输出。输出。算法设计注意:算法设计注意:算法设计注意:算法设计注意:正确性、可读性、健壮性、高效性。正确性、可读性、健壮性、高效性。2第2页,本讲稿共2
2、6页4.1.2 算法的组成要素算法的组成要素1 1、操作:操作:操作:操作:包括算术运算、逻辑运算、关系运算、函数包括算术运算、逻辑运算、关系运算、函数运算、位运算、运算、位运算、I/OI/O操作等。操作等。2 2、控制结构:控制结构:控制结构:控制结构:控制算法中各个操作的执行顺序。控制算法中各个操作的执行顺序。三种基本控制结构是:三种基本控制结构是:三种基本控制结构是:三种基本控制结构是:顺序结构(顺序执行)顺序结构(顺序执行)选择结构(比较判断)选择结构(比较判断)循环结构或称重复结构(反复执行)循环结构或称重复结构(反复执行)3第3页,本讲稿共26页4.1.3 算法的描述算法的描述1.
3、1.自然语言自然语言2.2.流程图流程图3.3.N-S图图4.4.PAD图图5.5.伪代码伪代码语句语句2语句语句1语句语句1语句语句2判断判断YN语句语句4第4页,本讲稿共26页3.复合语句复合语句一般形式:内部数据说明部分;执行语句部分;2.表达式语句表达式语句 l 运算符表达式语句:运算符表达式语句:计算表达式的值。l 函数调用表达式语句:函数调用表达式语句:调用函数。4.2 C语言的基本语句语言的基本语句1.1.声明语句声明语句声明语句声明语句用于声明合法标识符(变量名或函数名),可在函数用于声明合法标识符(变量名或函数名),可在函数体或复合语句中使用,且须写在其他语句前面。体或复合语
4、句中使用,且须写在其他语句前面。例例:x=(a+3)*b;a=sin(x);y=x+;例如例如:int a,b;double x,y,z;5第5页,本讲稿共26页4.4.空语句空语句空语句空语句只有分号组成的语句,什么也不执行。只有分号组成的语句,什么也不执行。5.5.流程控制语句流程控制语句流程控制语句流程控制语句uu条件判断语句条件判断语句 if if语句语句、switchswitch语句。语句。uu循环执行语句循环执行语句 dodowhilewhile语句、语句、whilewhile语句、语句、forfor语句。语句。uu流程转向语句流程转向语句 breakbreak语句语句、gotog
5、oto语句、语句、continuecontinue、语句语句returnreturn语语句。句。如:如:main()int a=1,b=4;.int b;b=3;printf(“%dn”,a+b);printf(“%d”,a+b);输出:输出:4 5说明:说明:l 后不加分号。l 语法上和单一语句相同。l 复合语句可嵌套。l 复合语句中的变量只在本部分有效。6第6页,本讲稿共26页4.3 顺序结构顺序结构程序由简单语句组成,程序流程如图顺序结构程序由简单语句组成,程序流程如图顺序结构程序由简单语句组成,程序流程如图顺序结构程序由简单语句组成,程序流程如图3.1 3.1 所示,语句按书写顺序执行
6、,先执行所示,语句按书写顺序执行,先执行所示,语句按书写顺序执行,先执行所示,语句按书写顺序执行,先执行A A,再执行,再执行,再执行,再执行B B。BA顺序结构执行流程顺序结构执行流程例例:main()int a,b=4;a=b*2;printf(“%d”,a a);7第7页,本讲稿共26页4.4 选择结构选择结构4.4.1 ifelse4.4.1 ifelse语句语句语句语句结构形式:结构形式:结构形式:结构形式:if (if (表达式表达式)语句语句1 1;elseelse 语句语句2 2;执行过程:执行过程:执行过程:执行过程:先判断表达式,成立就执行语句先判断表达式,成立就执行语句1
7、 1,否则执行语句,否则执行语句2 2。例:if(xy)max=x;else max=y;注意:注意:l ifelse中表达式可为关系表达式、逻辑表达式、数值表达式。l ifelse中语句1、语句2可以为简单语句或复合语句。l ifelse中分号的使用位置。表达式表达式语句语句1真真假假语句语句2双分支选择双分支选择8第8页,本讲稿共26页4.4.2 if语句语句结构形式:结构形式:结构形式:结构形式:if (if (表达式表达式)语句;语句;执行过程:执行过程:执行过程:执行过程:先判断表达式,若成立则执行语句,否则跳先判断表达式,若成立则执行语句,否则跳 过该语句而直接执行该结构后的下一条
8、语句。过该语句而直接执行该结构后的下一条语句。注意注意注意注意:此处,不管分支语句是否执行,此处,不管分支语句是否执行,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;else if(score=60)grade=D;else grade=E;10第10页,本讲稿共26页4.4.4 if语句的嵌套语句的嵌套当当if if(表达式)或(表达式)或elsee
9、lse后面的语句本身又是一个后面的语句本身又是一个if if语句结构语句结构时,就形成了时,就形成了if if语句的嵌套结构。语句的嵌套结构。一般形式:一般形式:一般形式:一般形式:if(if(表达式表达式1)1)if(if(表达式表达式1_2)1_2)语句语句1_11_1 else else 语句语句1_21_2elseelse if(if(表达式表达式2_1)2_1)语句语句2_12_1 else else 语句语句2_22_2注意:注意:注意:注意:当程序中存在嵌套的当程序中存在嵌套的if.elseif.else结构时,每个结构时,每个elseelse都与都与其前面最近的其前面最近的 i
10、f if 配对,由内层向外层逐步处理。配对,由内层向外层逐步处理。11第11页,本讲稿共26页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 stateme
11、nt4内嵌内嵌if例如:例如:12第12页,本讲稿共26页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页4.4.5 switch语句结构语句结构一般形式:一般形式:一般形式:一般形式:执行过程:执行过程:执行过程:执行过程:switch(表达式表达式)case E1:语句组语句组 1;case E2:语句组语句组 2;.case En:语句组语句组 n;default :语句组语句组;switch表达式表达式语句组语句组1语句组语句组2语句组语句组n
12、语句组语句组.E 1E 2Endefaultcase 例:例:switch(i)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页4.5 循环结构循环结构循环控制:记数法和标志法。循环控制:记数法和标志法。循环控制:记数法和标志法。循环控制:记数法和标志法。4.5.1 穷举与迭代算法穷举与迭代算法1.1.穷举穷举穷举穷举l l问题所涉及的情况。问题所涉及的情况。问题所涉
13、及的情况。问题所涉及的情况。l l答案需要满足的条件。答案需要满足的条件。答案需要满足的条件。答案需要满足的条件。2.2.迭代迭代迭代迭代l l确定迭代变量。确定迭代变量。确定迭代变量。确定迭代变量。l l建立迭代关系式。建立迭代关系式。建立迭代关系式。建立迭代关系式。l l对迭代工程进行控制。对迭代工程进行控制。对迭代工程进行控制。对迭代工程进行控制。15第15页,本讲稿共26页4.5.2 while语句语句一般格式:一般格式:一般格式:一般格式:while while (循环条件表达式)(循环条件表达式)循环体语句;循环体语句;执行过程:执行过程:执行过程:执行过程:先计算循环条件表达式的
14、值,若为真则执行先计算循环条件表达式的值,若为真则执行循环体语句,重复上述过程,直到循环条件表达式的值循环体语句,重复上述过程,直到循环条件表达式的值为假时,循环结束。为假时,循环结束。注意:注意:注意:注意:先判断,后执行。先判断,后执行。循环条件表达式只要其值非循环条件表达式只要其值非0 0,就可以执行循环体。,就可以执行循环体。循环体由多个语句组成时,须用花括号形成复合语句。循环体由多个语句组成时,须用花括号形成复合语句。为使循环最终能结束,每执行一次循环体,循环条件为使循环最终能结束,每执行一次循环体,循环条件 表达式的值应趋于表达式的值应趋于0 0变化。变化。如果表达式的值一开始就为
15、如果表达式的值一开始就为0 0,则语句一次也会被不执行。,则语句一次也会被不执行。#include“stdio.h”main()int i,sum=0;i=1;while(i=100)sum=sum+i;i+;printf(%d,sum);16第16页,本讲稿共26页4.5.3 dowhile语句语句一般格式:一般格式:一般格式:一般格式:dodo 循环体语句;循环体语句;while (while (循环条件表达式循环条件表达式);执行流程:执行流程:执行流程:执行流程:先执行循环体语句,然后对循环条件表达式进行先执行循环体语句,然后对循环条件表达式进行计算,若其值为真则重复上述过程,直到循环
16、条件表达式的计算,若其值为真则重复上述过程,直到循环条件表达式的值为假时,循环结束。值为假时,循环结束。注意:注意:注意:注意:如果表达式的值一开始就为如果表达式的值一开始就为0 0,也会执行一次语句,此处,也会执行一次语句,此处 异于异于whilewhile语句。语句。循环控制变量值在循环体内必须有所改变。循环控制变量值在循环体内必须有所改变。#include“stdio.h”main()int i,sum=0;i=1;do sum+=i;i+;while(i=100);printf(%d,sum);17第17页,本讲稿共26页4.5.4 for语句语句一般形式:一般形式:一般形式:一般形式
17、:for (for (表达式表达式1;1;表达式表达式2;2;表达式表达式3)3)循环体语句;循环体语句;其中:其中:其中:其中:表达式表达式1 1常用于给循环变量赋初值,可选。常用于给循环变量赋初值,可选。表达式表达式2 2是循环条件,可选。是循环条件,可选。表达式表达式3 3常用来修改循环变量的值,可选。常用来修改循环变量的值,可选。expr2循环体假(0)真(非0)forexpr1expr3说明:说明:for语句中三个表达式 的类型任意,自身都可省略,但 分号不可省。无限循环:for(;)for语句可以转换成while结构。表达式1;while(表达式2)循环体语句;表达式3;#incl
18、ude“stdio.h”main()int i,sum=0;for(i=1;i=100;i+)sum+=i;printf(%d,sum);18第18页,本讲稿共26页例:例: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)if(i100)break;break;/*/*如果如果如果如果 i100,i100,则退出循环则退出循环则退出循环
19、则退出循环*/printf(“sum=%d”,sum);printf(“sum=%d”,sum);本程序中,当本程序中,当本程序中,当本程序中,当i100i100时,强行终止时,强行终止时,强行终止时,强行终止forfor循环,继续执行循环,继续执行循环,继续执行循环,继续执行forfor语句下一条语句。语句下一条语句。语句下一条语句。语句下一条语句。21第21页,本讲稿共26页2.continue语句语句语句形式:语句形式:语句形式:语句形式:continue;continue;作用作用作用作用:使本次循环提前结束,即跳过循环体中尚未执行:使本次循环提前结束,即跳过循环体中尚未执行的循环体语
20、句,但不结束整个循环,而继续进行下一次的循环体语句,但不结束整个循环,而继续进行下一次循环的条件判别以决定是否进入下一次循环。循环的条件判别以决定是否进入下一次循环。说明:说明:说明:说明:仅用于循环语句中。仅用于循环语句中。3.函数的调用和返回函数的调用和返回作用:作用:作用:作用:使程序流程转向被调用函数,而函数返回语句使程序流程转向被调用函数,而函数返回语句returnreturn的功能是使流程从被调用函数返回主调函数。的功能是使流程从被调用函数返回主调函数。22第22页,本讲稿共26页例:显示输入的字符例:显示输入的字符例:显示输入的字符例:显示输入的字符,如果按的是如果按的是如果按的
21、是如果按的是EscEsc键键键键,则退出循环;则退出循环;则退出循环;则退出循环;如如如如果按的是果按的是果按的是果按的是EnterEnter键键键键,则不做任何处理,继续输入下一个字符。则不做任何处理,继续输入下一个字符。则不做任何处理,继续输入下一个字符。则不做任何处理,继续输入下一个字符。#include#include main()main()char ch char ch;for(;)for(;)ch=getchar()ch=getchar();/*/*字符输入函数字符输入函数字符输入函数字符输入函数*/if (ch=27)/*Esc if (ch=27)/*Esc键的键的键的键的A
22、CSIIACSII码为码为码为码为27*/27*/breakbreak;/*/*退出循环退出循环退出循环退出循环*/if(ch=13)if(ch=13)continuecontinue;/*/*按的是按的是按的是按的是EnterEnter键,跳过字符输出语句键,跳过字符输出语句键,跳过字符输出语句键,跳过字符输出语句*/putchar(ch)putchar(ch);/*/*显示输入的字符显示输入的字符显示输入的字符显示输入的字符*/getchar()getchar();/*/*让程序停一下,拍任意键继续让程序停一下,拍任意键继续让程序停一下,拍任意键继续让程序停一下,拍任意键继续*/23第23
23、页,本讲稿共26页4.goto语句语句gotogoto语句被称为无条件转移语句,由两部分组成:语句被称为无条件转移语句,由两部分组成:语句被称为无条件转移语句,由两部分组成:语句被称为无条件转移语句,由两部分组成:goto goto 标号标号;和和和和 标号标号:语句语句其中:其中:其中:其中:标号必须是一个合法的标识符,把它放在一个语句前面,后标号必须是一个合法的标识符,把它放在一个语句前面,后跟一个冒号,表示程序流程将转向此语句。跟一个冒号,表示程序流程将转向此语句。注意:注意:注意:注意:gotogoto语句和语句和breakbreak语句相比语句相比最大的好处是可以一下跳最大的好处是可
24、以一下跳出多重循环,但不能从外出多重循环,但不能从外面跳入循环体内。面跳入循环体内。gotogoto语句应有限制地进行语句应有限制地进行使用。使用。main()int sum=0,n=1;loop:if(n=100)sum+=n;n+;goto loop;printf(“%dn”,sum);24第24页,本讲稿共26页4.5.6 循环结构的嵌套循环结构的嵌套循环的嵌套:循环的嵌套:循环的嵌套:循环的嵌套:在循环体语句中又有另一个完整的循环结在循环体语句中又有另一个完整的循环结构的形式。构的形式。内循环:内循环:内循环:内循环:嵌套在循环体内的循环语句。嵌套在循环体内的循环语句。外循环:外循环:
25、外循环:外循环:外面的循环语句。外面的循环语句。多层循环:多层循环:多层循环:多层循环:内循环体中又有嵌套的循环语句。内循环体中又有嵌套的循环语句。注意:注意:注意:注意:l l内循环必须被包含在外层循环的循环体中,不允许出现内外层循内循环必须被包含在外层循环的循环体中,不允许出现内外层循环体交叉的情况。环体交叉的情况。l l嵌套循环的跳转,禁止:从外层跳入内层;嵌套循环的跳转,禁止:从外层跳入内层;跳入同层的另一循环;跳入同层的另一循环;向上跳转。向上跳转。(1)while()while().(2)do do while();.while();(3)while()do while();.(4
26、)for(;)do while();while().25第25页,本讲稿共26页例例例例 循环嵌套,输出九九乘法表循环嵌套,输出九九乘法表循环嵌套,输出九九乘法表循环嵌套,输出九九乘法表main()main()int i,j;int i,j;for(i=1;i=9;i+)for(i=1;i=9;i+)for(j=1;j=i;j+)for(j=1;j=i;j+)printf(“%d*%d=%-4d”,j,i,i*j);printf(“%d*%d=%-4d”,j,i,i*j);printf(“n”);printf(“n”);i=9printf假(0)真(非0)i=1j+j=1j=i真(非0)假(0)i+内循环内循环外循环外循环26第26页,本讲稿共26页