版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、控制流,吴清锋 2007年秋,提纲,选择结构 if 条件运算符 switch 循环结构 while do-while for break与continue goto 运算符小结,结束,小提醒,学习这部分内容时: 首先,要掌握每一形式的规范。如在if ( )中,别忽视()的存在; 其次,要区分各种形式之间的差异; 再次,一定要记住“该用时就该用”(即:记住它们的功能) 要思考,引进选择结构和循环结构的背景! 什么是选择? 什么是循环?,结束,if(1): if语句的三种形式,语句形式(注意联系图示): if (表达式) 语句 if (表达式) 语句1 else 语句2 if (表达式1) 语句1
2、else if (表达式2) 语句2else if (表达式n-1) 语句n-1else 语句n 示例,此处的语句指单个语句,如果在某个分支中需要执行多个操作,必须使用块语句(回忆下!)。 包围表达式的小括号是必须的。 此处的表达式不要求是逻辑表达式或关系表达式,可以是数值表达式(非0表示真,0表示假),这个else 语句n也可以没有,此形式一般用来解决带“区间”的问题。 注意,表达式的书写及涵盖关系!P96,if(2): if语句的嵌套,if语句中的内嵌语句也可能是if语句。 一般形式是:if (表达式1) if (表达式2) 语句1 else 语句2else if (表达式3) 语句3 e
3、lse 语句4,if(3): if语句歧义,歧义情形:if (表达式1)if (表达式2) 语句1else 语句2 解决方案:C规定,else总与较近的if配对。 如果想表达左边这种情形必须采用如下形式:if (表达式1) if (表达式2) 语句1else 语句2,返回,条件运算符(1),当if语句中无论表达式为“真”和“假”时,都只执行一个赋值语句,并赋值语句的左值相同时,C允许使用形式更简单的条件运算符来替代。如:if (ab) max=a; else max=b;等价于max=(ab)?a:b;其中,(ab)?a:b为“条件表达式”。 条件表达式的一般形式为:表达式1?表达式2:表达式
4、3 条件运算符:要求有3个操作对象,是C语言中唯一的三目运算符。 条件运算符的执行顺序和条件表达式的值。,要求,能够互为转换!,条件运算符(2),条件运算符优先级高于赋值运算符,但是低于或运算符。所以max=(ab)?a:b等价于max=ab?a:bab?a:b+1等价于ab?a:(b+1) 条件运算符的结合方向为“自右至左”。所以ab?a:cd?c:d等价于ab?a:(cd?c:d)注意,与(ab?a:c)d?c:d不同。 条件表达式中,三个表达式的类型均可不同。当表达式2和表达式3的类型不同时,可能出现类型转换。如:xy?1:1.5,返回,double型,switch,switch()是多
5、分支选择语句 语句形式: switch (表达式) case 常量表达式1: 语句组1 case 常量表达式2: 语句组2 case 常量表达式n: 语句组n default: 语句组n+1 示例,返回,表达式可以任意类型,其值将自动转换为整数。 各常量表达式的值必须是整数,且各不相同。 当某case常量表达式被匹配成功时,将执行其后语句组,执行过程将一直持续到遇见break、return或switch语句的结束“”。,语句形式: while (表达式) 语句 注意: while的循环体只能包含一个语句,若有多项操作应采用复合语句。 while的特点是先判断表达式,后执行循环体;故while语
6、句的循环体可能一次也不被执行。 使用while语句经常容易犯的错误是:在循环体中不包含能最终促使循环结束的语句死循环。这就意味着循环体的书写需要注意!引入“循环变量”的概念! 示例(P114(6.2),while,返回,语句形式: do 语句while (表达式); 注意 do-while语句的特点是先执行循环体,再判断循环条件是否成立。故循环体至少执行一次。 特别注意,执行过程!P115 示例,do-while(1),把do-while转换成while 把while转换成do-while 总结下,while和do-while之间的差异,do-while(2),返回,语句形式: 一般形式:fo
7、r (表达式1;表达式2;表达式3) 语句 for语句的执行过程 最简单的应用形式:for (循环变量赋初值;循环条件;循环变量增值) 语句如:for (i=0; i=n; i+) printf(%d , i); 注意: for语句的三个表达式都不是必须的,但作为分隔符的分号却是必须的,下面是一些例子:i=0; for ( ;i=n; i+) printf (%d , i);for(i=0; i=n; ) printf(%d , i+);for(; ;) 语句 表达式2通常是关系表达式或逻辑表达式。但也可以 语句部分也可以是空语句,如:for (i=0; i=n; i+) ;,for(1),没
8、有表达式2,语句中必须有break或return,把for转换成while 把while转换成for,for(2),返回,一个循环体内又包含另一个完整的循环结构,称为循环的嵌套 3种循环可以互相嵌套 注意:学习这部分的时候,一定要关注嵌套中循环变量的值,即关注内外层循环呈现的关系。,循环的嵌套,返回,break语句 一般形式:break; 功能:break可以用在switch语句中,也可用在循环语句中。在循环语句中,break用于终止循环。 break不能用于循环语句或switch语句外的任何语句中,这里的循环语句专指while,do-while或for。 continue语句 一般形式:co
9、ntinue; 功能:结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。 continue语句和break语句的区别是:continue仅仅结束本次循环,而break则终止整个循环。,break与continue,返回,goto语句为无条件转向语句,其一般形式为:goto 语句标号;其中语句标号是一个标识符。 goto语句的滥用将使程序流程无规律、可读性差。 goto主要用在与if语句一起构成循环结构。或从循环体中跳转到循环体外。 例子:实现求n!main() int n,p,i; scanf(n=%d,goto语句,返回,运算符小结,返回,示例:if(1),下
10、列语句是否正确? if (i0) i+else i-; if (i0) i+; printf(i=%dn, i);else i-; if (x=y)|(x=z) printf(x is equal to y or x is equal to zn); if (a=b) printf(a=%dn, a);,示例:if(2),输入两个数,并要求按由小到大的次序输出 main() float a, b, t; scanf(%f%f, 扩展下:如果是三个数,如何进行有序的输出呢? 注意:上面的题目是,进行有序的输出;而P13(1.6)是只需要最大值的输出,请思考它们实现上的差异!,示例:if(3),输
11、入三个数,并要求按由小到大的次序输出 main() float a, b, c, t; scanf(%f%f%f, ,返回,示例:switch,下列程序片段是否正确? int i=10, j=10;switch(i) case j: printf(i=%d, in case %dn, i, j); case 10: printf(i=%d, in case %dn, i, 10); #define J 10int i=10;switch(i) case J: printf(i=%d, in case %dn, i, J); case 10: printf(i=%d, in case %dn, i, 10);,返回,示例:while,输入一个整数,求其阶乘 main() int n, p, i; scanf(%d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 桡动脉血氧饱和度监测护理查房
- 2026年高考英语阅读理解:主旨大意专项突破试卷
- 2026年精神病医院严重精神障碍患者管理知识考试试题及答案
- 2026年司法考试法律职业资格考试全真模拟试卷
- 2025-2026年人教版九年级地理下册第10单元人口与城市测试卷
- 2025-2026年天津市苏教版小学四年级英语下册第6单元词汇巩固习题
- 2025-2026年物流师考试运输管理实务模拟试题
- 2026年压疮分期识别处置实操指南考试试卷试题及答案
- 含氮杂环配体:合成路径、性质探究与多元应用
- 含气泡介质声速频散特性的多维度探究与前沿洞察
- (2026年秋期新教材版)部编版5年级上册小学语文教学计划+教学进度表2
- 洪水漫堤险情处置预案解读
- 2026年秋季学期新版人教版小学数学五年级上册教学计划附进度表
- 急诊科过敏性休克应急演练脚本演练方案
- 消防技术服务机构质量手册范本
- 财政投资评审操作规程实务指南
- Unit 1 单词讲解2026-2027学年人教版九年级英语上册
- 柔性光伏电池介绍
- ASME B16.10-2022 阀门结构长度(中英文参考版)
- 文学空间理论中的“阈限”概念应用-基于巴赫金“时空体”与列斐伏尔“空间生产”整合
- 2026年打印纸品供应合同协议
评论
0/150
提交评论