C语言05-ControlFl.ppt

控制流,吴清锋 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表示假),这个else 语句n也可以没有,此形式一般用来解决带“区间”的问题。 注意,表达式的书写及涵盖关系P96,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),当if语句中无论表达式为“真”和“假”时,都只执行一个赋值语句,并赋值语句的左值相同时,C允许使用形式更简单的条件运算符来替代。如 if ab maxa; else maxb; 等价于 maxabab; 其中,abab为“条件表达式”。 条件表达式的一般形式为 表达式1表达式2表达式3 条件运算符要求有3个操作对象,是C语言中唯一的三目运算符。 条件运算符的执行顺序和条件表达式的值。,要求,能够互为转换,条件运算符(2),条件运算符优先级高于赋值运算符,但是低于或运算符。所以 maxabab 等价于 maxabab abab1 等价于 abab1 条件运算符的结合方向为“自右至左”。所以 abacdcd 等价于 abacdcd 注意,与abacdcd不同。 条件表达式中,三个表达式的类型均可不同。当表达式2和表达式3的类型不同时,可能出现类型转换。如xy11.5,返回,double型,switch,switch是多分支选择语句 语句形式 switch 表达式 case 常量表达式1 语句组1 case 常量表达式2 语句组2 case 常量表达式n 语句组n default 语句组n1 示例,返回,表达式可以任意类型,其值将自动转换为整数。 各常量表达式的值必须是整数,且各不相同。 当某case常量表达式被匹配成功时,将执行其后语句组,执行过程将一直持续到遇见break、return或switch语句的结束“”。,语句形式 while 表达式 语句 注意 while的循环体只能包含一个语句,若有多项操作应采用复合语句。 while的特点是先判断表达式,后执行循环体;故while语句的循环体可能一次也不被执行。 使用while语句经常容易犯的错误是在循环体中不包含能最终促使循环结束的语句死循环。 这就意味着循环体的书写需要注意引入“循环变量”的概念 示例P1146.2,while,返回,语句形式 do 语句 while 表达式; 注意 do-while语句的特点是先执行循环体,再判断循环条件是否成立。故循环体至少执行一次。 特别注意,执行过程P115 示例,do-while(1),把do-while转换成while 把while转换成do-while 总结下,while和do-while之间的差异,do-while(2),返回,语句形式 一般形式for 表达式1;表达式2;表达式3 语句 for语句的执行过程 最简单的应用形式 for 循环变量赋初值;循环条件;循环变量增值 语句 如for i0; in; i printf“d “, i; 注意 for语句的三个表达式都不是必须的,但作为分隔符的分号却是必须的,下面是一些例子 i0; for ;in; i printf “d “, i; fori0; in; printf“d “, i; for; ; 语句 表达式2通常是关系表达式或逻辑表达式。但也可以 语句部分也可以是空语句,如for i0; in; i ;,for(1),没有表达式2,语句中必须有break或return,把for转换成while 把while转换成for,for(2),返回,一个循环体内又包含另一个完整的循环结构,称为循环的嵌套 3种循环可以互相嵌套 注意学习这部分的时候,一定要关注嵌套中循环变量的值,即关注内外层循环呈现的关系。,循环的嵌套,返回,break语句 一般形式break; 功能break可以用在switch语句中,也可用在循环语句中。在循环语句中,break用于终止循环。 break不能用于循环语句或switch语句外的任何语句中,这里的循环语句专指while,do-while或for。 continue语句 一般形式continue; 功能结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。 continue语句和break语句的区别是continue仅仅结束本次循环,而break则终止整个循环。,break与continue,返回,goto语句为无条件转向语句,其一般形式为 goto 语句标号; 其中语句标号是一个标识符。 goto语句的滥用将使程序流程无规律、可读性差。 goto主要用在与if语句一起构成循环结构。或从循环体中跳转到循环体外。 例子实现求n main int n,p,i; scanf“nd“, ,goto语句,返回,运算符小结,返回,示例if(1),下列语句是否正确 if i0 i else i; if i0 i; printf“idn“, i; ; else i; if xyxz printf“x is equal to y or x is equal to zn“; if ab printf“adn“, a; 示例if(2),输入两个数,并要求按由小到大的次序输出 main float a, b, t; scanf“ff“, 扩展下如果是三个数,如何进行有序的输出呢 注意上面的题目是,进行有序的输出;而P131.6是只需要最大值的输出,请思考它们实现上的差异,示例if(3),输入三个数,并要求按由小到大的次序输出 main float a, b, c, t; scanf“fff“, ,返回示例switch,下列程序片段是否正确 int i10, j10; switchi case j printf“id, in case dn“, i, j; case 10 printf“id, in case dn“, i, 10; define J 10 int i10; switchi case J printf“id, in case dn“, i, J; case 10 printf“id, in case dn“, i, 10; ,返回,示例while,输入一个整数,求其阶乘 main int n, p, i; scanf“d“, ,返回,如果输入小于等于1,循环体将不被执行。 程序的不足之处,对于输入是否非负没有判别。,要思考,怎么就不用顺序结构或是选择结构呢 问题本身如何体现出“循环”,示例do-while,输入一个整数,求其阶乘 main int n, p, i; scanf“nd“, ,返回,注意到,初试化部分不能直接设置i2,这样将多执行一次乘法,

c语言control函数,C语言05-ControlFl.ppt相关推荐

  1. C语言 strcat_s 函数 - C语言零基础入门教程

    目录 一.strcat_s 函数简介 二.strcat_s 函数原理 三.strcat_s 函数实战 四.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语 ...

  2. C语言 printf 函数 - C语言零基础入门教程

    目录 一.printf 函数简介 二.C 语言格式符/占位符 三.printf 函数实战 四.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 ...

  3. C语言 fclose 函数 - C语言零基础入门教程

    目录 一.fclose 函数简介 二.fclose 函数实战 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.fclose 函数简介 ...

  4. C语言 fopen 函数 - C语言零基础入门教程

    目录 一.fopen 函数简介 二.fopen 函数实战 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.fopen 函数简介 C 语 ...

  5. C语言 assert 函数 - C语言零基础入门教程

    目录 一.assert 函数简介 二.assert 函数使用 三.assert 函数用法总结与注意事项 四.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C ...

  6. C语言 abort 函数 - C语言零基础入门教程

    目录 一.abort 函数简介 二.abort 函数使用 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.abort 函数简介 C 语 ...

  7. C语言 vprintf 函数 - C语言零基础入门教程

    目录 一.vprintf 函数和 printf 函数声明简介 1.printf 函数声明 2.vprintf 函数声明 二.vprintf 函数和 printf 函数使用 三.猜你喜欢 零基础 C/C ...

  8. C语言 memcpy_s 函数 - C语言零基础入门教程

    目录 一.memcpy_s 函数简介 1.memcpy 函数报错:error C4996 2.memcpy 函数没有方法来保证有效的缓冲区尺寸,使用不安全 二.memcpy_s 函数语法 三.memc ...

  9. C语言 sizeof 函数 - C语言零基础入门教程

    目录 一.sizeof 函数简介 二.sizeof 函数实战 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.sizeof 函数简介 ...

最新文章

  1. 领跑交互新时代 蓦然认知助力传统产业智能化升级
  2. java:数字转string 报空指针_《java基础》我踩过三元运算符的坑
  3. 为IP v6划分子网
  4. 弹性盒模型--新版与旧版比较(2)
  5. arcgis缓冲后在envi中聚类出错
  6. vue 左侧菜单隐藏_vue.js 左侧二级菜单显示与隐藏切换的实例代码
  7. 源码分析 | 深度解密Go语言之context
  8. 插件 脚本 线程 进程
  9. 7-31 查验身份证 (15 分)
  10. 五子棋游戏设计详解(C语言)
  11. FreeRTOS-时间片轮转调度
  12. 【MySQL】聚合函数、group by、having、order by等语句的应用
  13. Springboot集成urule
  14. 云计算机技术与应用学什么的,云计算技术与应用专业学什么 主要课程
  15. C语言 四种不同方法来判断闰年
  16. Linux下查看IP
  17. 面试 http://mp.weixin.qq.com/s/p5mXVzixSDZZ6o9DpU5Xaw
  18. 洛杉矶 夏威夷_夏威夷大学如何解决当今的高等教育问题
  19. 使用Bmob云端服务器模拟简单的注册登录
  20. Linux磁盘术语描述

热门文章

  1. 【转】Redis 分布式——可用性保证之 Sentinel(实战篇)
  2. systemctl与service
  3. Anroid BLE蓝牙(手机分别作为中心设备和外围设备)
  4. 石油管道泄漏在线监测系统,原来可以这么简单
  5. SSM+智能社区服务的设计与实现 毕业设计-附源码221512
  6. C语言实现一个走迷宫小游戏(深度优先算法)
  7. 面向对象设计的六大原则
  8. 4PAM在高斯信道与瑞利信道下的基带仿真系统实验
  9. sg函数 hdu 1404 Digital Deletions
  10. 7-204 毕达哥拉斯三元组