c语言 第二章 程序的流程控制_第1页
c语言 第二章 程序的流程控制_第2页
c语言 第二章 程序的流程控制_第3页
c语言 第二章 程序的流程控制_第4页
c语言 第二章 程序的流程控制_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、第二章第二章 程序的流程控制程序的流程控制2.1 选择(分支)结构选择(分支)结构2.1.1 关系运算符与逻辑运算符关系运算符与逻辑运算符C的关系运算符如下的关系运算符如下: 大于大于 大于等于大于等于 小于小于 小于等于小于等于 等于等于 不等于不等于关系运算符关键是真关系运算符关键是真(true)和假和假(false)的概念。的概念。C中中 true可以是不为可以是不为0的任何值的任何值, 而而false则为则为0。 使用关系运算符时使用关系运算符时, 若表达式为真若表达式为真(即即true)则返回则返回1, 否则否则, 表表达式为假达式为假(即即false), 则返回则返回0。 例如例如

2、: 10099 返回返回1 10(2+10) 返回返回0 2.0 算法的表示算法的表示2.1 算法的概念算法的概念 算法是对特定问题求解步骤的一种描述,也是算法是对特定问题求解步骤的一种描述,也是解决问题的办法解决问题的办法,它是,它是指令的有限序列,其中每一条指令表示一个或多个操作。指令的有限序列,其中每一条指令表示一个或多个操作。u 自然语言自然语言u 流程图流程图u N-S图图u 伪代码伪代码u PAD图图2.2 算法的表示算法的表示2.0 算法的表示算法的表示起止框起止框处理框处理框判断框判断框输入输输入输出框出框流程线流程线连接点连接点注释框注释框2.2 算法的表示算法的表示-流程图

3、流程图2.0 算法的表示算法的表示程序的三种基本结构程序的三种基本结构1.顺序结构顺序结构2.2 算法的表示算法的表示-流程图流程图AB流程图流程图2.0 算法的表示算法的表示程序的三种基本结构程序的三种基本结构2.2 算法的表示算法的表示-流程图流程图2.选择序结构选择序结构PAB真真假假2.0 算法的表示算法的表示程序的三种基本结构程序的三种基本结构2.2 算法的表示算法的表示-流程图流程图3.循环序结构循环序结构1.1.当型当型( (whilewhile型型) )循环结构循环结构2.2.直到型直到型( (untiluntil型型) )循环结构循环结构PA假假真真AP真真假假2.0 算法的

4、表示算法的表示2.1 选择(分支)结构选择(分支)结构2.1.1 关系运算符与逻辑运算符关系运算符与逻辑运算符C的逻辑运算符如下的逻辑运算符如下: 逻辑非逻辑非 逻辑与逻辑与 | 逻辑或逻辑或 例如例如: 先求先求 !1 和先求和先求 1&0 将会等于出不同的结果将会等于出不同的结果, 那么何者优先呢那么何者优先呢? 这在这在C中是有中是有规定的规定的 C的部分运算符的优先级如下的部分运算符的优先级如下: 表达式表达式 优先级优先级 (小括号小括号) (数组下标数组下标) (结构成员结构成员) (指针型结构成员指针型结构成员) 最高最高 (逻辑非逻辑非) (位取反位取反)(负号负号)

5、(加加1) (减减1) (变量地址变量地址) (指针所指内容指针所指内容)(长度计算长度计算) (乘乘) (除除) (取模取模) (加加) (减减) (位左移位左移) (位右移位右移) (小于小于) (小于等于小于等于) (大于大于) (大于等于大于等于) (等于等于) (不等于不等于) (位与位与) (位异或位异或) (位或位或) (逻辑与逻辑与) (逻辑或逻辑或) (?表达式表达式) (联合操作联合操作) (逗号运算符逗号运算符) 最低最低 2.1 选择(分支)结构选择(分支)结构2.1.2 if()else结构结构C中条件语句的一中条件语句的一 般形式为般形式为: if(表达式表达式)

6、语句语句1; else 语句语句2; 上述结构表示上述结构表示: 如果表达式的值为非如果表达式的值为非0()即真即真, 则执行语句则执行语句1, 执行完语句执行完语句1从语句从语句2后开始继续向下执行后开始继续向下执行; 如果表达式的值为如果表达式的值为0()即假即假, 则跳过语句则跳过语句 1而而执行语句执行语句2。所谓表达式是指关系表达式和逻辑表达式的结合式所谓表达式是指关系表达式和逻辑表达式的结合式。 注意注意: 1. 条件执行语句中条件执行语句中“else 语句语句2;”部分是选择项部分是选择项, 可以缺省可以缺省, 此时条件此时条件语句语句 变成变成: if(表达式表达式) 语句语句

7、1; 表示若表达式的值为非表示若表达式的值为非0则执行语句则执行语句1 , 否则跳过语否则跳过语句句1继续执行。继续执行。 2. 如果语句如果语句1或语句或语句2有多于一条语句要执行时有多于一条语句要执行时, 必须使用必须使用和和 把这把这些些 语句包括在其中语句包括在其中, 此时条件语句形式为此时条件语句形式为: 2.1 选择(分支)结构选择(分支)结构2.1.2 if()else结构结构注意注意: if(表达式表达式) 语句体语句体1; else 语句体语句体2; 3. 条件语句可以嵌套条件语句可以嵌套, 这种情况经常碰到这种情况经常碰到, 但条件嵌套语句容易出错但条件嵌套语句容易出错,

8、其原因主要是不知道哪个其原因主要是不知道哪个if对应哪对应哪个个else。 例如例如:if( x 20 | x -10) if( y x) printf(Good); else printf(Bad); 对于上述情况对于上述情况, C规定规定: else语句与最近的一个语句与最近的一个if语句匹配语句匹配, 上例上例 中的中的else与与if( y x)相匹配。相匹配。为了使为了使else与与if( x 20 | x 20 | x -10) if( y x) printf(Good); else printf(Bad); 2.1 选择(分支)结构选择(分支)结构例例2.1 符号函数符号函数in

9、t main(void)float x;int y=-1;printf(“input x:”);scanf(“%f”,&x);if(x!=0)if(x0) y=1;elseprintf(“nx=%6.2f,y=%dn”,x,y); f(x)=1 (x0)0 (x=0)-1 (x0) ? (x+) : (x-)相当于相当于if(x0)a=x+;elsea=x-;2.1 选择(分支)结构选择(分支)结构例例2.2 数据分段处理,数据分段处理,049为为 A 段,段, 50119为为 B 段,段,120169为为 C 段段int main(void)int y;char result;pri

10、ntf(“input y:”);scanf(“%d”,&y);if( y = 0 & y = 50 & y = 120 & y 170)result =C;elseresult =D;printf(“n result =%c”,y); 2.1 选择(分支)结构选择(分支)结构 在编写程序时在编写程序时, 经常会碰到按不同情况分转的多路经常会碰到按不同情况分转的多路问题问题, 这时可用嵌套这时可用嵌套if -else-fi语句来实现语句来实现, 但但if-else-if语句使用不方便语句使用不方便, 并且容易出错。对这种情并且容易出错。对这种情 况况, C提供提供

11、了一个开关语句。了一个开关语句。开关语句格式为开关语句格式为: switch(变量变量) case 常量常量1: 语句语句1或空或空; case 常量常量2: 语句语句2或空或空; . . . case 常量常量n; 语句语句n或空或空; default: 语句语句n+1或空或空; 2.1 选择(分支)结构选择(分支)结构 执行执行switchswitch开关语句时开关语句时, , 将变将变量逐个与量逐个与casecase后的常量进行比较后的常量进行比较, , 若与其中一若与其中一 个相等个相等, , 则执行该常则执行该常量下的语句量下的语句, , 若不与任何一个常量若不与任何一个常量相等相等

12、, , 则执行则执行default default 后后 面的语面的语句。句。 注意注意: : 1.1. 中变量可以是数值中变量可以是数值, , 也也可以是字符。可以是字符。 2.2. 可以省略一些可以省略一些和和。 3.3. 每个每个 或或后的语句后的语句可以是语句体可以是语句体, , 但不需要使用但不需要使用和和括起括起 来。来。 2.1.3 switch结构结构下例的下例的 中变量为整数型。中变量为整数型。 例例 2.3 int main(void) int test; for(test=0; test=10; test+) switch(test) /*变量为整型数的开关语句变量为整型

13、数的开关语句*/ case 1: printf(%dn, test); break; /*退出开关语句退出开关语句*/ case 2: printf(%dn, test); break; case 3: printf(%dn, test); break; default: puts(Error); break; switch中变量也可为字符中变量也可为字符2.1 选择(分支)结构选择(分支)结构forfor语句的一般形式为语句的一般形式为: : forfor(表达式表达式1 1;表达式;表达式2 2;表达式;表达式3 3) 循环体循环体 它的执行过程如下:它的执行过程如下:(1) (1) 先求

14、解表达式先求解表达式1 1;(2) (2) 求解表达式求解表达式2 2,若其值为真(非,若其值为真(非0 0),则执行),则执行forfor语句中指定的内嵌语句,语句中指定的内嵌语句,然后执行下面第(然后执行下面第(3 3)步,若为假()步,若为假(0 0),则结束循环,转到第(),则结束循环,转到第(5 5)步。)步。(3 3)若表达式为真,在执行指定的语句后,求解表达式)若表达式为真,在执行指定的语句后,求解表达式3 3。 (4 4)转回上面第()转回上面第(2 2)步骤继续执行。)步骤继续执行。 (5 5)执行)执行forfor语句下面的一个语句。语句下面的一个语句。 2.2.1 for

15、结构结构求解表求解表达式达式1语句语句for语句的语句的下一语句下一语句求解求解表达式表达式3求解求解表达式表达式2FT2.2.1 for结构结构2.2.1 for结构结构例如:计算例如:计算123100?for(i=1;i=100;i+) sum=sum+i;相当于以下的相当于以下的while语句:语句: i=1; while(i=100) sum=sum+i;i+; for语句的一般形式用语句的一般形式用while语句来表示为:语句来表示为: 表达式表达式1 while(表达式表达式2) 语句语句表达式表达式3; 2.2.1 for结构结构1. for语句中表达式语句中表达式1可以省略,其

16、后的分号不能省略介,此时应在可以省略,其后的分号不能省略介,此时应在for语句语句之前给循环变量赋初值之前给循环变量赋初值 。如。如: for( ; i=100 ; i+) sum=sum+i;执行时,跳过执行时,跳过“求解表达式求解表达式1”这一步,其它不变。这一步,其它不变。 2如果表达式如果表达式2省略,即不判断循环条件,循环无终止地进行下去。也就是省略,即不判断循环条件,循环无终止地进行下去。也就是认为表达式认为表达式2始终为真。始终为真。 如:如: for( i=1 ; ; i+) sum=sum+i;2.2.1 for结构结构3表达式表达式3也可以省略,但此时程序设计者应另外设法保

17、证循环能正常结束。也可以省略,但此时程序设计者应另外设法保证循环能正常结束。 如:如: for(sum0,i1 ;i100 ;) sumsum十十i; i+; 本例把本例把i+的操作不放在的操作不放在for语句的表达式语句的表达式3的位置处,而作为循环体的一部的位置处,而作为循环体的一部分,效果是一样的,都能使循环正常结束。分,效果是一样的,都能使循环正常结束。4可以省略表达式可以省略表达式1和表达式和表达式3,只有表达式,只有表达式2,即只给循环条件。,即只给循环条件。如:如: for(;(;i100;);) sumsum+i;i+;相当于:相当于:5三个表达式都可省略,如三个表达式都可省略

18、,如 for (;)(;)语句语句 2.2.2 while结构和结构和dowhile结构结构whilewhile语句用来实现语句用来实现“当型当型”循环结构。其一般形式如下:循环结构。其一般形式如下: whi1e (whi1e (表达式表达式E)E) 循环体循环体 ;执行过程执行过程: : 计算表达式计算表达式E E的值的值 若若E E为非为非0, 0, 则执行语句则执行语句s, s, 然后转然后转 若若E E为为0, 0, 则退出循环则退出循环, , 执行该循环后的语句执行该循环后的语句ES0 0非非0 0特点特点: : 先判断表达式,后执行语句先判断表达式,后执行语句, , 因此因此, ,

19、 若进入若进入whilewhile循循环时环时E E的值就是的值就是0 0,则语句,则语句S S一次也不执行一次也不执行2.2.2 while结构和结构和dowhile结构结构例如:计算例如:计算123100?intint main(voidmain(void) ) intint i, sum=0; i, sum=0; i=1; i=1; while (i=100) while (i=100) sum+=i; sum+=i; i+; i+; printfprintf (“sum=% (“sum=%d”,sumd”,sum) ;) ; 2.2.2 while结构和结构和dowhile结构结构do

20、-while语句用来实现语句用来实现“直到型直到型”循环结构。其一般形式为:循环结构。其一般形式为: do 循环体循环体while (表达式表达式E);执行过程执行过程: : 执行循环体执行循环体S S 计算计算E E值值 若若E E的值为真的值为真( (非非0), 0), 则转则转 若若E E的值为假的值为假(0), (0), 则结束循环则结束循环ES0 0非非0 0特点特点: : 先执行循环体,再判断表达式,因此循环体至少执行一次。先执行循环体,再判断表达式,因此循环体至少执行一次。例如:计算例如:计算123100?main( ) main( ) intint i, sum=0; i, s

21、um=0; i=1; i=1; do do sum+=i; sum+=i; i+; i+; while (i0)x1=(x2+1)*2;/*第一天的桃子数是第第一天的桃子数是第2天桃子数加天桃子数加1后的后的2倍倍*/ x2=x1; day-;printf(the total is %dn,x1);2.2.2 while结构和结构和dowhile结构结构本节课新内容到此结束本节课新内容到此结束后面的内容为下一节后面的内容为下一节2.2.3 循环嵌套循环嵌套 一个循环体内又包含另一个完整的循环结构,称为一个循环体内又包含另一个完整的循环结构,称为循环的嵌套循环的嵌套。内嵌的循。内嵌的循环中还可以

22、嵌套环中还可以嵌套. 三种循环(三种循环(whi1e循环、循环、do-whi1e循环和循环和for循环)可循环)可以互相嵌套。例如,下面几种都是合法的形式:以互相嵌套。例如,下面几种都是合法的形式: (1) while()() (3)for(;) for(;) while()() . . (2) do (4)while() . . do do while(); . while(); while(); 2.2.4 break语句和语句和continue语句语句1 break语句语句 break语句可以使流程跳出语句可以使流程跳出switch结构,继续执行结构,继续执行switch语句下面的语句下

23、面的一个语句。一个语句。break语句还可以用来从循环体内跳出循环体,即提前结束循环,语句还可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句。如接着执行循环下面的语句。如 for(r=1; r100) break; printf(” area%f”,area); break语句的一般形式:语句的一般形式: break;注意:注意:break语句只能用于循环语句和语句只能用于循环语句和switch语句。语句。2.2.4 break语句和语句和continue语句语句2 continue语句语句 一般形式为一般形式为 continue;其作用为结束本次循环,即跳过循环体中下面尚

24、未执行的语句,接着进行其作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。下一次是否执行循环的判定。 continue语句和语句和break语句的区别是:语句的区别是:continue语句只结束语句只结束本次本次循环,循环,而不是终止整个循环的执行,而而不是终止整个循环的执行,而break语句则是结束语句则是结束本层本层循环,不再进行条件循环,不再进行条件判断。如果有以下两个循环结构:判断。如果有以下两个循环结构: (1)while (表达式表达式1) (2) while (表达式表达式1) if(表达式表达式2) break; if(表达式表达式2) continue; 例例6. 6 把把100-200之间的不能被之间的不能被

温馨提示

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

评论

0/150

提交评论