C语言05-ControlFl.ppt_第1页
C语言05-ControlFl.ppt_第2页
C语言05-ControlFl.ppt_第3页
C语言05-ControlFl.ppt_第4页
C语言05-ControlFl.ppt_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

控制流 吴清锋 2007年秋 提纲 选择结构 if 条件运算符 switch 循环结构 while do-while for break与continue goto 运算符小结 结束 小提醒 学习这部分内容时: 首先,要掌握每一形式的规范。如在if ( )中,别 忽视()的存在; 其次,要区分各种形式之间的差异; 再次,一定要记住“该用时就该用”(即:记住它 们的功能) 要思考,引进选择结构和循环结构的背景! 什么是选择? 什么是循环? 结束 if(1): if语句的三种形式 语句形式(注意联系图示): if (表达式) 语句 if (表达式) 语句1 else 语句2 if (表达式1) 语句1 else if (表达式2) 语句2 else if (表达式n-1) 语句n-1 else 语句n 示例 此处的此处的语句语句指指单个语句单个语句, 如果在某个分支中需要执如果在某个分支中需要执 行多个操作,必须使用行多个操作,必须使用块块 语句(语句(回忆下!)。 包围包围表达式表达式的小括号是必的小括号是必 须的。须的。 此处的此处的表达式表达式不要求不要求是逻是逻 辑表达式或关系表达式,辑表达式或关系表达式, 可以是数值表达式(非可以是数值表达式(非0 0表表 示真,示真,0 0表示假)表示假) 这个这个else else 语句语句 n n 也可以没有也可以没有 此形式一般用来解决带此形式一般用来解决带“ “区间区间” ”的问题。的问题。 注意,表达式的书写及涵盖关系!注意,表达式的书写及涵盖关系!P96P96 if(2): if语句的嵌套 if语句中的内嵌语句也可能是if语句。 一般形式是: if (表达式1) if (表达式2) 语句1 else 语句2 else if (表达式3) 语句3 else 语句4 if(3): if语句歧义 歧义情形:if (表达式1) if (表达式2) 语句1 else 语句2 解决方案:C规定,else总与较近的if配对。 如果想表达左边这种情形必须采用如下形式: if (表达式1) if (表达式2) 语句1 else 语句2 返回 表达式1 表达式2 语句1语句2 表达式1 表达式2 语句1 语句2 条件运算符(1) 当if语句中无论表达式为“真”和“假”时,都只执行 一个赋值语句,并赋值语句的左值相同时,C允许 使用形式更简单的条件运算符来替代。如: if (ab) max=a; else max=b; 等价于 max=(ab)?a:b; 其中,(ab)?a:b为“条件表达式”。 条件表达式的一般形式为: 表达式1?表达式2:表达式3 条件运算符:要求有3个操作对象,是C语言中唯 一的三目运算符。 条件运算符的执行顺序和条件表达式的值。 要求,能够互为转换!要求,能够互为转换! 条件运算符(2) 条件运算符优先级高于赋值运算符,但是低于或 运算符。所以 max=(ab)?a:b 等价于 max=ab?a:b ab?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 返回 doubledouble型型 switch switch()是多分支选择语句 语句形式: switch (表达式) case 常量表达式1: 语句组1 case 常量表达式2: 语句组2 case 常量表达式n: 语句组n default: 语句组n+1 示例 返回 表达式表达式可以任意类型,其可以任意类型,其 值将自动转换为整数。值将自动转换为整数。 各各常量表达式常量表达式的值必须是的值必须是 整数,且各不相同。整数,且各不相同。 当某当某casecase常量表达式常量表达式被匹被匹 配成功时,将执行其后配成功时,将执行其后语语 句组句组,执行过程将一直持,执行过程将一直持 续到遇见续到遇见breakbreak、returnreturn或或 switchswitch语句的结束语句的结束“ “”。 语句形式: while (表达式) 语句 注意: while的循环体只能包含一个语句,若有多项操作应采 用复合语句。 while的特点是先判断表达式,后执行循环体;故while 语句的循环体可能一次也不被执行。 使用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) 返回 do 语句 while (表达式); 循环体语句 while (表达式) 语句 if (表达式) do 语句 while (表达式); while (表达式) 语句 语句形式: 一般形式:for (表达式1;表达式2;表达式3) 语句 for语句的执行过程 最简单的应用形式: for (循环变量赋初值;循环条件;循环变量增值) 语句 如:for (i=0; 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“, if(ab) t=a; a=b; b=t; printf(“%5.2f,%5.2fn“, a, b); 扩展下:如果是三个数,如何进行有序的输出呢? 注意:上面的题目是,进行有序的输出;而P13(1.6)是 只需要最大值的输出,请思考它们实现上的差异! a t b (1) (2) (3) 示例:if(3) 输入三个数,并要求按由小到大的次序输 出 main() float a, b, c, t; scanf(“%f%f%f“, if(ab)t=a; a=b; b=t; if(ac)t=a; a=c; c=t; if(bc)t=b; b=c; c=t; printf(“%5.2f,%5.2f,%5.2fn“, a, b, c); 返回 初值 a30201010 b20303020 c10102030 示例: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 10 int 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“, p=1; i=2;初始化部分 while (in printf(“%d!=%dn“, n, p); 返回 如果输入小于等于1, 循环体将不被执行。 程序的不足之处,对 于输入是否非负没有 判别。 要思考,怎么就不用 顺序结构或是选择结

温馨提示

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

评论

0/150

提交评论