




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言程序设计电子教案 第3章控制结构 第第3 3章控制结构章控制结构 返回总目录C语言程序设计电子教案 第3章控制结构目录目录 3.1 3.1程序结构框图程序结构框图 3.23.2二分支结构二分支结构 3.33.3多分支结构多分支结构 3.63.6习题三习题三 3.43.4循环结构循环结构 3.53.5breakbreak与与continuecontinue语句语句 返回总目录C语言程序设计电子教案 第3章控制结构基本要求:基本要求:)熟悉C语言的程序结构框图;)熟悉C语言的二分支结构、多分支结构和循环结构;)熟练掌握结构化程序设计方法。学习重点:学习重点:)流程图、N-S图、循环结构;)结
2、构化程序设计方法。C语言程序设计电子教案 第3章控制结构3.1程序结构框图程序结构框图自然语言描述自然语言描述 l 程序设计的关键是程序设计的关键是算法算法。l 算法算法是实际问题求解步骤的描述是实际问题求解步骤的描述。有了正确有效的。有了正确有效的算法,就可以用任何一种计算机语言编写程序,解算法,就可以用任何一种计算机语言编写程序,解决各种问题。决各种问题。l 算法可采用算法可采用自然语言自然语言、流程图流程图或或N-SN-S图图等进行描述。等进行描述。 自然语言描述:用人们日常所使用的语言自然语言描述:用人们日常所使用的语言( (如英如英语、汉语语、汉语) )进行算法的描述。进行算法的描述
3、。 返回目录C语言程序设计电子教案 第3章控制结构3.1程序结构框图程序结构框图自然语言描述自然语言描述 例例3.23.2求求s=1+2+3+s=1+2+3+100+100之和。之和。解题思路解题思路要将要将11001100累加到累加到s s变量上去,如果采用先初始化变量上去,如果采用先初始化变量变量s=0s=0,然后用语句序列,然后用语句序列s=s+1s=s+1;s=s+2s=s+2;则要重复写则要重复写100100个个加法赋值语句,很显然,这种算法不可取。改用下述算法。加法赋值语句,很显然,这种算法不可取。改用下述算法。算法步骤:算法步骤:(1) (1) 设设s=0,n=0s=0,n=0;
4、(2) (2) 变量变量n n值加值加1 1,即,即n=n+1n=n+1;(3) (3) 将将n n加到变量加到变量s s中,即中,即s=s+ns=s+n;(4) (4) 如果如果n n值小于值小于100100,返回去执行第,返回去执行第2 2步。否则执行第步。否则执行第5 5步;步;(5) (5) 输出输出s s变量的值。变量的值。 C语言程序设计电子教案 第3章控制结构3.1程序结构框图程序结构框图流程图流程图 流程图是一种传统的算法描述方法,流程图是一种传统的算法描述方法,l它用几种不同的几何图来代表不同性质的操作它用几种不同的几何图来代表不同性质的操作; ;l用流程线来指示算法的执行方
5、向用流程线来指示算法的执行方向. .用流程图表示的算法简单直观,容易转化成相应的语用流程图表示的算法简单直观,容易转化成相应的语言程序。言程序。C语言程序设计电子教案 第3章控制结构3.1程序结构框图程序结构框图流程图流程图 表示算法表示算法的开始或的开始或结束;结束;表示数据表示数据的输入和的输入和输出;输出;在在实际中输实际中输入输出也入输出也常用矩形常用矩形框表示。框表示。用来对给定的用来对给定的条件进行判断条件进行判断,根据条件成,根据条件成立与否来决定立与否来决定其后的操作,其后的操作,它有一个入口它有一个入口和两个出口;和两个出口;用来表用来表示一般示一般的数据的数据处理;处理;表
6、示算表示算法执行法执行流程;流程;用来链用来链接画在接画在不同地不同地点的流点的流程图。程图。常用流程图符号C语言程序设计电子教案 第3章控制结构3.1程序结构框图程序结构框图流程图流程图 例例3.4 3.4 将例将例3.23.2中的算法用流程图表示,如下图所示。中的算法用流程图表示,如下图所示。C语言程序设计电子教案 第3章控制结构3.1程序结构框图程序结构框图N NS S图图 N-SN-S图是程序算法的另一种图形表示,它是由美图是程序算法的另一种图形表示,它是由美国人国人I.NassiI.Nassi和和B.ShneidermanB.Shneiderman共同提出来的,其依共同提出来的,其依
7、据是:因为任何算法都是由顺序结构、分支据是:因为任何算法都是由顺序结构、分支( (选择选择) )结构、循环结构这三种结构所组成,所以可以不需结构、循环结构这三种结构所组成,所以可以不需要各结构之间的流程线,全部算法写在一个矩形框要各结构之间的流程线,全部算法写在一个矩形框内,矩形框内由顺序、选择、循环三种结构组成。内,矩形框内由顺序、选择、循环三种结构组成。C语言程序设计电子教案 第3章控制结构3.1程序结构框图程序结构框图N NS S图图 3种基本结构的NS图顺序结构:顺序结构:它是按照语句它是按照语句出现的先后顺出现的先后顺序依次执行的序依次执行的。如上图所示如上图所示,先执行,先执行A
8、A模模块,再执行块,再执行B B模块。模块。 分支结构:分支结构:它是根据给定条件它是根据给定条件进行判断,选择其进行判断,选择其中的一个分支执行中的一个分支执行。如上图所示,如上图所示,P P表示条件,当表示条件,当P P成成立时执行分支立时执行分支A A模模块,否则执行分支块,否则执行分支B B模块。模块。 当型循环:当型循环:当条件满足时,重当条件满足时,重复执行某一操作。复执行某一操作。如上图所示,当条如上图所示,当条件件P P为为“真真”时,反时,反复执行复执行A A模块操作,模块操作,直到直到P P为为“假假”时才时才终止循环,继续执终止循环,继续执行循环后面的语句行循环后面的语句
9、。 直到型循环:直到型循环:它是先执行循环体操作,再它是先执行循环体操作,再判断条件,如果条件满足,判断条件,如果条件满足,则继续执行循环体操作,直则继续执行循环体操作,直到条件不满足时,才退出循到条件不满足时,才退出循环。环。如上图所示,首先执行如上图所示,首先执行A A模块操作,然后再判断给定模块操作,然后再判断给定的条件的条件P P是否成立,如果成立是否成立,如果成立,反复执行,反复执行A A模块操作,直到模块操作,直到条件条件P P不成立。不成立。 C语言程序设计电子教案 第3章控制结构3.1程序结构框图程序结构框图N NS S图图 例例3.6 3.6 将例将例3.23.2中的算法用中
10、的算法用N-SN-S图表示,如下图所示。图表示,如下图所示。C语言程序设计电子教案 第3章控制结构3.1程序结构框图程序结构框图结构化程序设计结构化程序设计 l 结构化程序设计的基本思想是:任何程序都由顺序结构、结构化程序设计的基本思想是:任何程序都由顺序结构、分支结构和循环结构这三种基本结构组成。分支结构和循环结构这三种基本结构组成。 l 结构化程序:由结构化程序:由3 3种基本结构经过反复组合、嵌套构成的程种基本结构经过反复组合、嵌套构成的程序。序。l 结构化程序设计方法:结构化程序设计方法:自顶向下,逐步细化自顶向下,逐步细化模块化设计模块化设计结构化编码结构化编码C语言程序设计电子教案
11、 第3章控制结构3.1程序结构框图程序结构框图结构化程序设计结构化程序设计 l 结构化程序设计具有以下特点:结构化程序设计具有以下特点:一个程序单元由顺序、分支、循环这一个程序单元由顺序、分支、循环这3 3种基本结构组成。种基本结构组成。3 3种基本种基本结构经过反复嵌套,可以表示任何复杂的算法。结构经过反复嵌套,可以表示任何复杂的算法。 一个大的程序由若干个不同功能的小模块组成。一个大的程序由若干个不同功能的小模块组成。每个小模块只有一个入口和一个出口。每个小模块只有一个入口和一个出口。程序中不能有无穷循环(死循环)。程序中不能有无穷循环(死循环)。程序中不能有在任何条件下都执行不到的语句(
12、死语句)。程序中不能有在任何条件下都执行不到的语句(死语句)。用结构化思想设计出来的计算机程序,具有清晰的模块界面,因用结构化思想设计出来的计算机程序,具有清晰的模块界面,因此,在书写程序时,我们应根据逻辑结构和层次深度的不同,采此,在书写程序时,我们应根据逻辑结构和层次深度的不同,采用缩进对齐的方式,将程序模块写在不同的位置,这样可以提高用缩进对齐的方式,将程序模块写在不同的位置,这样可以提高程序的可读性,有助于调试程序,找出程序的逻辑错误。程序的可读性,有助于调试程序,找出程序的逻辑错误。 C语言程序设计电子教案 第3章控制结构3.1程序结构框图程序结构框图结构化程序的语句结构化程序的语句
13、 表达式语句表达式语句: :由由“表达式分号表达式分号”构成。如赋值语句、构成。如赋值语句、函数调用语句。函数调用语句。空语句:空语句:只由一个分号构成。空语句执行不产生任何动只由一个分号构成。空语句执行不产生任何动作,常用于循环体中。作,常用于循环体中。控制语句:控制语句:完成一定的程序流程控制功能。如完成一定的程序流程控制功能。如if-elseif-else,switch-caseswitch-case,forfor,whilewhile,do-whiledo-while,breakbreak,continuecontinue,gotogoto,returnreturn。复合语句:复合语句
14、:由一对大括号括起来的一条或多条语句。由一对大括号括起来的一条或多条语句。被括起来的语句可以是这被括起来的语句可以是这4 4类的任何一类语句,常用于函数类的任何一类语句,常用于函数体或循环体。体或循环体。 C语言程序设计电子教案 第3章控制结构3.2二分支结构二分支结构二分支二分支ifif语句语句 基本形式:基本形式:if (表达式表达式) 语句语句1;else 语句语句2;例如:if(xy) printf(“max=%d”,x);else printf(“max=%d”,y);表达式表达式语句语句2假假(0)真(非真(非0)语句语句1 返回目录C语言程序设计电子教案 第3章控制结构3.2二分
15、支结构二分支结构二分支二分支ifif语句语句 例例3.73.7求两个整数求两个整数x x、y y中较大的数,并赋给变量中较大的数,并赋给变量maxmax。解题思路解题思路x x、y y值由输入函数输入,根据其大小判断,大的赋给值由输入函数输入,根据其大小判断,大的赋给maxmax变量变量。其。其N-SN-S图如图图如图3.83.8所示,可以编写如下程序。所示,可以编写如下程序。#include#includestdio.h main( )main( ) int x,yint x,y, max; , max; printf(Input x,yprintf(Input x,y=); =); sca
16、nf(%d,%d,&x,&yscanf(%d,%d,&x,&y); ); if(xif(xy)y)max=x; max=x; elseelsemax=y; max=y; printf(Max=%dn,maxprintf(Max=%dn,max);); C语言程序设计电子教案 第3章控制结构3.2二分支结构二分支结构不平衡不平衡ifif语句语句 基本形式:基本形式:if (表达式表达式) 语句;语句;例如:if(xy) printf(“max=%d”,x);表达式表达式语句语句假(假(0)真(非真(非0)C语言程序设计电子教案 第3章控制结构3.2二分支结构二分支结构不平衡不平衡ifif语句语句
17、 例例3.83.8设计一个程序,从键盘输入设计一个程序,从键盘输入3 3个整数,按由小到大的顺序输出。个整数,按由小到大的顺序输出。解题思路解题思路三个整数三个整数x x、y y、z z,两两比较,始终保持,两两比较,始终保持x x的值最小,的值最小,z z的值最的值最大,不满足此条件,则其值进行交换。基大,不满足此条件,则其值进行交换。基N-SN-S图如图图如图3.103.10所示,可以编写出程所示,可以编写出程序如下:序如下:#includemain( ) int x,y,z,temp; printf(Input x,y,z=); scanf(%d,%d,%d,&x,&y,&z); if(
18、xy) temp=x; x=y; y=temp; if(xz) temp=x; x=z; z=temp; if(yz) temp=y; y=z; z=temp; printf(%d,%d,%dn,x,y,z); C语言程序设计电子教案 第3章控制结构3.2二分支结构二分支结构ifif语句的嵌套语句的嵌套 if (expr1) if (expr2) statement1 else statement2else if(expr3) statement3 else statement4内嵌内嵌if内嵌内嵌ifif (expr1) if (expr2) statement1 else statemen
19、t2内嵌内嵌ifif (expr1) if (expr2) statement1else statement3 内嵌内嵌ifif (expr1) statement1else if(expr3) statement3 else statement4内嵌内嵌if 嵌套的一般形式嵌套的一般形式C语言程序设计电子教案 第3章控制结构 10sin101log10010 xxxxexxyx3.2二分支结构二分支结构ifif语句的嵌套语句的嵌套 例例3.113.11计算分段函数的值:计算分段函数的值:C语言程序设计电子教案 第3章控制结构3.2二分支结构二分支结构ifif语句的嵌套语句的嵌套 #inclu
20、de #include main( )float x,y;scanf(%f,&x);if(x0) y=x;else if(x=1) y=exp(x); else if(x10) y=log10(x); else y=sin(x);printf(Y=%6.2fn,y); 例例3.113.11计算分段函数的值:计算分段函数的值:C语言程序设计电子教案 第3章控制结构l if if else else 配对原则:配对原则:缺省缺省 时,时,elseelse总是和总是和它上面离它最近的未配对的它上面离它最近的未配对的ifif配对配对if()if()if()else.else.else.3.2二分支结构
21、二分支结构ifif语句的嵌套语句的嵌套 通过通过“ifif语句的嵌套语句的嵌套”可实现可实现“多分支结构多分支结构”C语言程序设计电子教案 第3章控制结构3.2二分支结构二分支结构ifif语句的嵌套语句的嵌套 示例:示例: if (a=b) if(b=c) printf(“a=b=c”);else printf(“a!=b”);修改:修改: if (a=b) if(b=c) printf(“a=b=c”);else printf(“a!=b”);实现实现if else 正确配对方法:加正确配对方法:加 C语言程序设计电子教案 第3章控制结构3.3多分支结构多分支结构多分支多分支switchsw
22、itch语句语句 l if if 语句的嵌套实现多分支语句的嵌套实现多分支: 如果分支较多,则嵌套的如果分支较多,则嵌套的ifif语句层数就越多,程语句层数就越多,程序不但冗长而且理解也比较困难。因此,序不但冗长而且理解也比较困难。因此,C C语言语言又提供了一种专门用于处理多分支结构的条件选又提供了一种专门用于处理多分支结构的条件选择语句,称为择语句,称为switchswitch语句,又称开关语句。语句,又称开关语句。 返回目录C语言程序设计电子教案 第3章控制结构3.3多分支结构多分支结构多分支多分支switchswitch语句语句 lswitchswitch语句语句(开关语句开关语句)一
23、般形式:一般形式:switch( switch( 表达式表达式) ) case case 常量表达式常量表达式1: 1: 语句组语句组 1; break;1; break; case case常量表达式常量表达式2: 2: 语句组语句组 2; break;2; break; . . case case常量表达式常量表达式n: n: 语句组语句组 n; break;n; break; default: default: 语句组语句组n+1 ; break;n+1 ; break; C语言程序设计电子教案 第3章控制结构3.3多分支结构多分支结构多分支多分支switchswitch语句语句 lsw
24、itchswitch语句语句(开关语句开关语句)执行过程:执行过程:switchswitch表达式表达式语句组语句组1 1语句组语句组2 2语句组语句组n n语句组语句组n+1n+1.defaultdefaultcasecase常量表达式常量表达式1 1 casecase常量表达式常量表达式2 2 casecase常量表达式常量表达式n n C语言程序设计电子教案 第3章控制结构l说明:说明: switchswitch后面的表达式的值类型可以是整型、字符型或枚后面的表达式的值类型可以是整型、字符型或枚举型。举型。 当表达式的值与某个当表达式的值与某个casecase中的常量表达式的值相等时,中
25、的常量表达式的值相等时,就执行相应的就执行相应的casecase后的语句序列,直到遇到后的语句序列,直到遇到breakbreak语句或到语句或到达达switchswitch结构末尾。结构末尾。 多个连续的多个连续的casecase语句可以共用一个语句序列。语句可以共用一个语句序列。 case case 后的不同常量表达式的值不能相等。后的不同常量表达式的值不能相等。 breakbreak的作用是改变程序在的作用是改变程序在switchswitch结构中的执行流程,结构中的执行流程,将程序流程跳出将程序流程跳出switchswitch语句,转到语句,转到switchswitch语句后的下一条语语
26、句后的下一条语句去执行。句去执行。 switchswitch语句中允许嵌套语句中允许嵌套switchswitch语句。语句。 3.3多分支结构多分支结构多分支多分支switchswitch语句语句 C语言程序设计电子教案 第3章控制结构例例3.143.14从键盘输入一学生成绩,判断学生成绩等级。如果成绩在90100分,等级为“A”,成绩在8089分,等级为“B”,成绩在7079分,等级为“C”,成绩在6069分,等级为“D”,成绩小于60分,等级为“E”。main( )main( ) intint score score;char gradechar grade; printf(“Inputp
27、rintf(“Input students score students score:”) ); scanf(“%d”,&scorescanf(“%d”,&score) ); switch (score/10)switch (score/10) case 10 case 10: case 9case 9: grade=Agrade=A; breakbreak; case 8case 8: grade=Bgrade=B;breakbreak; case 7case 7: grade=Cgrade=C;breakbreak; case 6case 6: grade=Dgrade=D;breakbr
28、eak; default default: grade=Egrade=E; printf(“The students grade is %cn”,grade printf(“The students grade is %cn”,grade) ); 3.3多分支结构多分支结构多分支多分支switchswitch语句语句 表达式score/10的值为10和9时共用相同的语句序列。 C语言程序设计电子教案 第3章控制结构3.3多分支结构多分支结构多分支结构综合举例多分支结构综合举例 例例3.153.15计算分段函数的值:计算分段函数的值: )40(40)4020(205 . 0)2010(10)10
29、0()0(0 xxxxxxxxy 下面使用下面使用4种不同的方法实现该程序,以展现种不同的方法实现该程序,以展现C语言多语言多分支结构的风格。分支结构的风格。 C语言程序设计电子教案 第3章控制结构3.3多分支结构多分支结构多分支结构综合举例多分支结构综合举例 (1) (1) 使用不嵌套的使用不嵌套的ifif语句编程:语句编程:#include stdio.h#include main( )main( ) float x,yfloat x,y;scanf(“%f”,&xscanf(“%f”,&x) );if(xif(x0)0)y=0y=0;if(0=x&xif(0=x&x10)10)y=xy=
30、x;if(10=x&xif(10=x&x20)20)y=10y=10;if(20=x&xif(20=x&x40) =40)=40)y=40+xy=40+x;printf(“y=%5.2fn”,y)printf(“y=%5.2fn”,y); C语言程序设计电子教案 第3章控制结构3.3多分支结构多分支结构多分支结构综合举例多分支结构综合举例 (2) (2) 使用嵌套的使用嵌套的ifif语句编程:语句编程:#include stdio.h#include main( )main( ) float x,yfloat x,y;scanf(“%f”,&xscanf(“%f”,&x) );if(xif(x
31、=0)=0) if(xif(x=10)=10) if(xif(x=20)=20) if (x=40)if (x=40)y=40+xy=40+x;else else y=0.5y=0.5* *x+20 x+20; else else y=10y=10; elseelsey=xy=x; else else y=0y=0;printf(“y=%5.2fn”,y)printf(“y=%5.2fn”,y); C语言程序设计电子教案 第3章控制结构3.3多分支结构多分支结构多分支结构综合举例多分支结构综合举例 (3) (3) 使用使用ifelseifelse形式编程:形式编程:#include #incl
32、ude main( )main( ) float x,yfloat x,y;scanf(“%f”,&x)scanf(“%f”,&x);if(x0) if(x0) y=0y=0;else if(xelse if(x10) 10) y=xy=x; else if(xelse if(x20)20)y=10y=10; else if(xelse if(x40) 40) y=0.5y=0.5* *x+20 x+20; else else y=40+xy=40+x;printf(“y=%5.2fn”,y)printf(“y=%5.2fn”,y); C语言程序设计电子教案 第3章控制结构3.3多分支结构多分
33、支结构多分支结构综合举例多分支结构综合举例 (4) (4) 使用使用switchswitch语句编程:语句编程:#include #include main( )main( ) float x,y float x,y; int zint z; scanf(“%f”,&x)scanf(“%f”,&x); z=(int)(x/10) z=(int)(x/10); if(xif(x0) z= -10) z= -1; switch (z)switch (z) case 1 case 1: y=0y=0; breakbreak; case 0case 0: y=xy=x; breakbreak; cas
34、e 1case 1: y=10y=10; breakbreak; case 2case 2: case 3case 3: y=0.5y=0.5* *x+20 x+20;breakbreak; defaultdefault: y=40+xy=40+x; printf(“y=%5.2fn”,y) printf(“y=%5.2fn”,y); C语言程序设计电子教案 第3章控制结构 返回目录3.4循环结构循环结构引例引例 例例3.163.16求求s=1+2+3+s=1+2+3+100+100之和。之和。解题思路设变量解题思路设变量s s存储累加和,其初值为存储累加和,其初值为0 0,变量,变量n n作
35、为循环作为循环变量,其值由变量,其值由1 1变化到变化到100100,将,将n n的每一个值累加到的每一个值累加到s s变量,则可变量,则可以实现上述算法。以实现上述算法。(利用目前所学知识能编写如下程序)(利用目前所学知识能编写如下程序)#include stdio.h#include main( )main( ) intint s=0,n=0 s=0,n=0;n=n+1n=n+1;s=s+ns=s+n;n=n+1n=n+1;s=s+ns=s+n;printf(“s=%dn”,s)printf(“s=%dn”,s); 在上例中在上例中,n=n+1n=n+1;和;和s=s+ns=s+n;两语句
36、会在程序中;两语句会在程序中反复出现反复出现100100次,使程序变次,使程序变得很长。为解决这一问题得很长。为解决这一问题,C C语言引入了循环结构。语言引入了循环结构。C C语言中实现循环结构的语语言中实现循环结构的语句有句有forfor语句、语句、whilewhile语语句和句和dowhiledowhile语句。语句。C语言程序设计电子教案 第3章控制结构3.4循环结构循环结构forfor语句语句 lforfor语句的一般形式语句的一般形式for(表达式表达式1;表达式;表达式2;表达式;表达式3)循环体;循环体; 例如:例如:for(s=0,n=1;n=100;n+) s=s+n;C语
37、言程序设计电子教案 第3章控制结构lforfor语句的执行过程语句的执行过程(1) (1) 计算表达式计算表达式1 1;(2) (2) 计算表达式计算表达式2 2,若其值为非,若其值为非0 0,则,则执行第执行第3 3步;若为步;若为0 0,则转向第,则转向第6 6步执行;步执行; (3) (3) 执行循环体;执行循环体; (4) (4) 计算表达式计算表达式3 3;(5) (5) 跳转到第跳转到第2 2步继续执行;步继续执行; (6) (6) 终止循环,执行终止循环,执行forfor语句后的下一语句后的下一条语句。条语句。 3.4循环结构循环结构forfor语句语句 C语言程序设计电子教案
38、第3章控制结构例例3.173.17例例3.163.16用用forfor语句实现,程序如下:语句实现,程序如下: #include stdio.h#include main( )main( ) int s,nint s,n;for(s=0,n=1for(s=0,n=1;n=100n=100;n+)n+)s=s+ns=s+n;printf(“s=%dn”,s)printf(“s=%dn”,s); 3.4循环结构循环结构forfor语句语句 C语言程序设计电子教案 第3章控制结构lforfor语句的说明语句的说明3.4循环结构循环结构(1)(1)在在forfor语句中,若表达式语句中,若表达式1 1
39、缺省,则必须将表达式缺省,则必须将表达式1 1作为语作为语句安排在句安排在forfor语句之前。语句之前。 例例3.173.17例例3.163.16用用forfor语句实现,可以编写如下程序:语句实现,可以编写如下程序: #include stdio.h#include main( )main( ) int s,nint s,n; ;s=0; n=1s=0; n=1; for( ; n=100; n+)s=s+n;printf(“s=%dn”,s)printf(“s=%dn”,s); forfor语句语句 C语言程序设计电子教案 第3章控制结构lforfor语句的说明语句的说明3.4循环结构循
40、环结构(2)(2)在在forfor语句中,若表达式语句中,若表达式2 2缺省,则系统默认循环控制条件缺省,则系统默认循环控制条件为真(非为真(非0 0值),此时,如果不在循环体中加其它语句进行控制值),此时,如果不在循环体中加其它语句进行控制,循环将无限制进行下去,即出现死循环。,循环将无限制进行下去,即出现死循环。 例例3.173.17例例3.163.16用用forfor语句实现,可以编写如下程序:语句实现,可以编写如下程序: #include stdio.h#include main( )main( ) int s,nint s,n; ;for(s=0,n=1s=0,n=1;; n+)if
41、(n100) break;s=s+n;printf(“s=%dn”,s)printf(“s=%dn”,s); forfor语句语句 C语言程序设计电子教案 第3章控制结构lforfor语句的说明语句的说明3.4循环结构循环结构(3)(3)在在forfor语句中,若表达式语句中,若表达式3 3缺省,可将它的语句放在循环体缺省,可将它的语句放在循环体的最后。的最后。 例例3.173.17例例3.163.16用用forfor语句实现,可以编写如下程序:语句实现,可以编写如下程序: #include stdio.h#include main( )main( ) int s,nint s,n; ;for
42、(s=0,n=1s=0,n=1;n=100n=100; )s=s+n;n+;printf(“s=%dn”,s)printf(“s=%dn”,s); forfor语句语句 C语言程序设计电子教案 第3章控制结构lforfor语句的说明语句的说明3.4循环结构循环结构(4)(4)在在forfor语句中三个表达式都可以缺省,但其中的两个分号语句中三个表达式都可以缺省,但其中的两个分号不可省。不可省。例例3.173.17例例3.163.16用用forfor语句实现,可以编写如下程序:语句实现,可以编写如下程序: #include stdio.h#include main( )main( ) intin
43、t s=0,n=1 s=0,n=1; for(;) s=s+n; n=n+1; if(n100) break; printf(“s=%dn”,s)printf(“s=%dn”,s); forfor语句语句 C语言程序设计电子教案 第3章控制结构lforfor语句的说明语句的说明3.4循环结构循环结构(5)(5)循环体可以为空语句,但必须有分号(即循环为空语句)循环体可以为空语句,但必须有分号(即循环为空语句) 例例3.173.17例例3.163.16用用forfor语句实现,可以编写如下程序:语句实现,可以编写如下程序: #include stdio.h#include main( )main
44、( ) int s,nint s,n;for(s=0,n=1for(s=0,n=1;n=100n=100;s=s+ns=s+n,n+)n+);printf(“s=%dn”,s)printf(“s=%dn”,s); forfor语句语句 C语言程序设计电子教案 第3章控制结构l思考与练习:思考与练习:例例3.163.16用用forfor语句实现,相应的程序在前面已经例举语句实现,相应的程序在前面已经例举了多种方法,请同学们试用其他可能的方法编写程序。了多种方法,请同学们试用其他可能的方法编写程序。另外,例另外,例3.163.16还可以用还可以用whilewhile语句、语句、do-whiledo
45、-while语句、语句、if+gotoif+goto等方法实现。这说明,对于某个实际的编程问题等方法实现。这说明,对于某个实际的编程问题,可以编写出很多种程序来解决同一问题。所以,对我们,可以编写出很多种程序来解决同一问题。所以,对我们初学者来说,关键是要多学习、勤练习,熟则能生巧,到初学者来说,关键是要多学习、勤练习,熟则能生巧,到时,编写起程序来就游刃有余了!时,编写起程序来就游刃有余了!加油吧!加油吧!3.4循环结构循环结构forfor语句语句 C语言程序设计电子教案 第3章控制结构3.4循环结构循环结构whilewhile语句语句 l while while语句的一般形式语句的一般形式
46、while(while(表达式表达式) )循环体;循环体; 例如:例如:int n,sint n,s; ;n=1;n=1;s=0;s=0;while(nwhile(n=100)=100) s=s+ns=s+n; ;n+;n+; C语言程序设计电子教案 第3章控制结构3.4循环结构循环结构whilewhile语句语句 l while while语句的执行过程语句的执行过程首先计算和判断表达式的值,首先计算和判断表达式的值,如果表达式的值为如果表达式的值为“真真”(非(非0 0),则执行循环体,然后程序转),则执行循环体,然后程序转回去再计算和判断表达式的值,回去再计算和判断表达式的值,直到表达式
47、的值为直到表达式的值为“假假”(0 0),终止,终止whilewhile循环,继续执行循环,继续执行whilewhile语句后的下一语句。语句后的下一语句。 C语言程序设计电子教案 第3章控制结构3.4循环结构循环结构whilewhile语句语句 示例例示例例3.163.16用用whilewhile语句实现,可以编写如下程序:语句实现,可以编写如下程序: #include stdio.h#include main( )main( ) int s,nint s,n; ;s=0; n=1s=0; n=1; while(n=100)s=s+n;n+;printf(“s=%dn”,s)printf(“
48、s=%dn”,s); C语言程序设计电子教案 第3章控制结构3.4循环结构循环结构whilewhile语句语句 l do dowhilewhile语句的一般形式语句的一般形式dodo 循环体;循环体; whilewhile(表达式)(表达式)例如:例如:intint n=1,s=0; n=1,s=0;dodo s=s+ns=s+n; ;n+;n+;while(nwhile(n=100);=100);C语言程序设计电子教案 第3章控制结构3.4循环结构循环结构whilewhile语句语句 l do dowhilewhile语句的执行过程语句的执行过程dodowhilewhile语句的作用是无条件
49、语句的作用是无条件地先执行循环体一次(无论表达式地先执行循环体一次(无论表达式的值是否为的值是否为0 0或非或非0 0),所以又称为),所以又称为“直到型循环直到型循环”。循环体执行一次。循环体执行一次后,计算和判断表达式的值,若表后,计算和判断表达式的值,若表达式的值为达式的值为“真真”(非(非0 0),则程序),则程序转回去反复执行循环体,直到表达转回去反复执行循环体,直到表达式的值为式的值为“假假”(0 0),终止),终止dodowhilewhile语句,继续执行语句,继续执行dodowhilewhile语语句后的下一条语句。句后的下一条语句。 C语言程序设计电子教案 第3章控制结构3.
50、4循环结构循环结构whilewhile语句语句 示例例示例例3.163.16用用do-whiledo-while语句实现,可以编写如下程序:语句实现,可以编写如下程序: #include stdio.h#include main( )main( ) int s,nint s,n; ;s=0; n=1s=0; n=1; dos=s+n;n+;while(n=100);printf(“s=%dn”,s)printf(“s=%dn”,s); C语言程序设计电子教案 第3章控制结构3.4循环结构循环结构 l 循环嵌套:循环嵌套:指一个循环完全包含在另一个指一个循环完全包含在另一个循环的循环体中。循环的
51、循环体中。l whilewhile循环、循环、dodowhilewhile循环和循环和forfor循环都循环都可以互相嵌套。可以互相嵌套。l 二重循环的执行过程是外循环执行一次,二重循环的执行过程是外循环执行一次,内循环执行一遍,直至内循环结束后,才内循环执行一遍,直至内循环结束后,才能再进行一次外循环,如此反复,直到外能再进行一次外循环,如此反复,直到外循环结束。循环结束。l 内、外循环控制变量一般不能相同内、外循环控制变量一般不能相同. . C语言程序设计电子教案 第3章控制结构示例下面是示例下面是forfor语句的二重循环嵌套程序,试分析语句的二重循环嵌套程序,试分析其功能:其功能: #
52、include stdio.h#include main( )main( ) int i,jint i,j; ; for(i=1;i=9;i+)for(j=1;j=i;j+)printf(“%d*%d=%dt”, i, j, i*j);printf(“n”); 3.4循环结构循环结构 C语言程序设计电子教案 第3章控制结构3.4循环结构循环结构 上例二重循环嵌套程序的执行结果如下:上例二重循环嵌套程序的执行结果如下:C语言程序设计电子教案 第3章控制结构 l break break语句的一般形式语句的一般形式 break;break; breakbreak语句经常放在循环语句的语句经常放在循环
53、语句的循环体中,且通常和循环体中,且通常和ifif语句一语句一起使用。起使用。 作用:在满足一定条件时,提作用:在满足一定条件时,提前退出本层循环(不管循环控前退出本层循环(不管循环控制条件是否成立),使程序流制条件是否成立),使程序流程转向该循环结构后的下一条程转向该循环结构后的下一条语句执行。语句执行。 3.5break、continue及及goto语句语句 返回目录C语言程序设计电子教案 第3章控制结构 l break break语句的示例语句的示例例例3.283.28求求s=1+2+3+s=1+2+3+100+100之和。程序如下:之和。程序如下:#include main( )int
54、 s=0,n=1;while(1)s=s+n;n+;if(n100) break; printf(“s=%dn”,s);在程序中,在程序中,whilewhile循环的循环条件为循环的循环条件为1 1,是一死循环,是一死循环,退出该循环的办法退出该循环的办法是在循环体中加一是在循环体中加一条件和条件和breakbreak语句语句,满足,满足n100n100时,时,即退出循环。即退出循环。 3.5break、continue及及goto语句语句C语言程序设计电子教案 第3章控制结构 l continue continue语句的一般形式语句的一般形式 continue;continue; conti
55、nuecontinue语句经常放在循环语语句经常放在循环语句的循环体中。句的循环体中。 作用:是结束本次循环,即跳作用:是结束本次循环,即跳过循环体中某些还没有被执行过循环体中某些还没有被执行的语句,开始新的一次循环。的语句,开始新的一次循环。 与与breakbreak比较:比较: continuecontinue仅结仅结束本次循环,而束本次循环,而breakbreak是结束整是结束整个循环语句的执行。个循环语句的执行。3.5break、continue及及goto语句语句C语言程序设计电子教案 第3章控制结构 l continue continue语句的示例语句的示例例例3.303.30从键
56、盘输入10个不为0的整数,统计其中负数的个数,并求所有正数的平均值。解题思路解题思路程序中count用于统计负数个数,avg在循环结构中用于统计正数和,循环结束后用于计算平均值.#include main( ) int n,count=0,x; float avg=0; for(n=0;n0) avg=avg+x; continue; count+; if(count != 10)avg /=10-count; printf(“Count=%d,average=%fn”, count,avg); 3.5break、continue及及goto语句语句C语言程序设计电子教案 第3章控制结构3.5
57、break、continue及及goto语句语句 l goto goto语句的一般形式语句的一般形式 gotogoto 语句标号语句标号; ; 作用:使程序的流程无条件转移到相应语句标号处。作用:使程序的流程无条件转移到相应语句标号处。 gotogoto语句一般和语句一般和ifif语句一起使用,构成循环。语句一起使用,构成循环。 语句标号是对语句的标识,应是合法的标识符,语句标号是对语句的标识,应是合法的标识符,即只能由即只能由字母、数字和下划线组成,且第一字符必须是字母或下划字母、数字和下划线组成,且第一字符必须是字母或下划线。线。注意:不能用一个整数作为语句标号。注意:不能用一个整数作为语
58、句标号。 gotogoto语句是非结构化语句语句是非结构化语句,大量使用会造成程序流向混乱大量使用会造成程序流向混乱,可读性差可读性差,因此结构化程序设计一般不用因此结构化程序设计一般不用gotogoto语句语句. . C语言程序设计电子教案 第3章控制结构3.5break、continue及及goto语句语句 l goto goto语句的示例语句的示例构造当型循环(先判断循构造当型循环(先判断循环控制条件),程序如下:环控制条件),程序如下:#include main( ) int n=1,s=0; loop: if(n=100) s=s+n; n+; goto loop; printf(“
59、s=%dn”,s);例例3.31求求s=1+2+3+100之和。构造直到型循环(先执行构造直到型循环(先执行循环体循环体1 1次,后判断循环体控次,后判断循环体控制条件),程序如下:制条件),程序如下:#include main( ) int n=1,s=0; loop: s=s+n; n+; if(nb) m=a;b) m=a; B B)if(aif(ab) m=b;=0) m=a; =b)=0) m=a; D D)if(aif(a=b;)=0) m=a;=b;)=0) m=a;BCD 返回目录C语言程序设计电子教案 第3章控制结构3.6习题三习题三 4 4)若若i, ji, j均为整型变量
60、,则以下循环均为整型变量,则以下循环. . for(i=0,j=2; j=1; i+,jfor(i=0,j=2; j=1; i+,j-)-)printf(%5d, %dnprintf(%5d, %dn, i, j);, i, j); A A)循环体只执行一次)循环体只执行一次B B)循环体执行二次)循环体执行二次 C C)是无限循环)是无限循环D D)循环条件不合法)循环条件不合法5 5)以下程序段,执行结果为)以下程序段,执行结果为. a=1;a=1;do do a=a a=a* *a; a; while(!a);while(!a); A A)循环体只执行一次)循环体只执行一次B B)循环体
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 乳制品健康宣传活动创新创业项目商业计划书
- 电商平台用户画像深度挖掘创新创业项目商业计划书
- 老年婚恋交友平台创新创业项目商业计划书
- 线上购物线下试妆创新创业项目商业计划书
- 水利工程维修养护数字孪生管理创新创业项目商业计划书
- 电商供应链可视化管理系统创新创业项目商业计划书
- 汽车赛事直播服务创新创业项目商业计划书
- 辐射核安全知识培训内容课件
- 2025年数字货币对货币政策传导机制影响的金融科技视角研究
- 2025年文化与科技融合趋势下的数字文化内容创作创新模式研究报告
- 2023年山东水发集团有限公司招聘笔试题库及答案解析
- 全国2023年招商银行招银网络科技校园招聘考试模拟卷3套含答案详解
- YY/T 1745-2021自动粪便分析仪
- MT 220-1990煤矿用防爆柴油机械排气中一氧化碳、氮氧化物检验规范
- 燕窝工艺参考
- 班组施工任务单
- 斜拉桥主桥索塔施工监理实施细则
- 钢结构模块化安装施工方案
- 双氧水生产工艺简单简介
- KNS机器参数,干货
- 医院输血科技术人员绩效考核指标
评论
0/150
提交评论