- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C程序设计语言——控制流
Control Flow C程序设计语言 第3章 控制流 三种基本结构 顺序结构、选择结构、循环结构 已经证明,任何程序均可只用这三种结构实现 B?hm, Corrado, and Jacopini Guiseppe. Flow diagrams, Turing machines and languages with only two formation rules. Communication of ACM, 9(5):366-371, May 1966. 只用这三种结构的程序,叫结构化程序 程序“必须”符合结构化规则 流程图 语句块(Block) {}括住的若干条语句构成一个语句块 语句块内可以定义变量 变量必须在语句块的开头定义 变量仅在定义它的语句块内(包括下层语句块)有效(scope.c) 同一个语句块内的变量不可同名,不同语句块可以同名(homonym.c) 各司其职、下层优先 尽量不要在下层语句块内定义变量,也尽量不要定义同名变量 语句块可以用在任何可以使用语句的地方,但没有道理要乱加语句块 if-else 选择结构的一种最常用形式 if (表达式) 语句块1;else 语句块2;语句块3 表达式值非0时,执行语句块1,然后语句块3;表达式值为0时,执行语句块2,然后语句块3 else部分可以没有。当表达式值为0时,直接执行语句3 if-else嵌套使用时,注意else和谁配套的问题 else-if if的一种扩展 if (表达式1) 语句块1;else if (表达式2) 语句块2;else if (表达式3) 语句块3;…………else 语句块4;语句块5; else部分可以没有 switch 多路选择 switch (表达式) { case 整型常数1: 语句1; case 整型常数2: 语句2; ………… default: 语句3;} default可以没有 现场编程完成计算器…… 不要忘记break switch和else-if的比较 else-if比switch的条件控制更强大一些 else-if可以依照各种逻辑运算的结果进行流程控制 switch只能进行==判断,并且只能是整数判断 switch比else-if更清晰 两者都要尽量避免用得过多、过长,尤其不要嵌套得太多 它们大大增加程序的分支,使逻辑关系显得混乱,不易维护,易出错 循环——while,for while (表达式) 语句块; for (表达式1; 表达式2; 表达式3) 语句块; while while (表达式) 语句块1;语句块2; 只要表达式的值为非0,就重复执行语句块1,直到表达式值为0时止,开始执行语句块2 for for (表达式1; 表达式2; 表达式3) 语句块; 首先执行表达式1。如果表达式2的值为非0,就重复执行语句块和表达式3,直到表达式2的值为0时止 相当于:表达式1; while (表达式2){ 语句块; 表达式3;} for的所有表达式均可省略 注意 在for和while语句之后一般没有分号 有分号表示循环体就是分号之前的内容,即循环体不存在 while (i 100); i++; for (i = 0; i 100; i++); printf(%d, i); for通常有一个循环变量控制循环的次数,不要在循环体内改变这个变量 循环——do-while do 语句块1;while (表达式);语句块2; 首先执行语句,然后判断表达式的值。如果表达式为0,继续向下执行,否则,再次执行语句,再次判断表达式的值 语句块1会被执行至少一次 选择三种循环的一般思路 如果循环次数已知,用for 如果循环次数未知,用while 如果循环体至少要执行一次,用do-while 只是思路,不是定律 死循环 永远不会退出的循环为死循环 for (;;) {} while (1) {} do {} while (1) 除非确实需要死循环,否则不要使用这样的形式。它们使循环的中止条件变得不明朗 一般情况下,要极力避免死循环 绝大多数程序不需要死循环。如果出现,往往都是bug 时间过长的循环会造成“假死”现象,也要考虑解决 break和continue 对for、while、do-while循环进行内部手术 break,退出循环 continue,中断此次循环的执行,开始下一次 break和continue少用为妙 它们增加了循环执行的分支,break更增加了循环的出口 它们可以用来处理程序异常,而尽量不要用来处理正常流程 goto与标号(label) 标号举例 Error: 同变量、函数的命名规则一样,后面加上一个冒号,一般顶格书写
文档评论(0)