欢迎来到天天文库
浏览记录
ID:44209605
大小:296.50 KB
页数:25页
时间:2019-10-19
《C程序设计语言——控制流》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、C程序设计语言第3章控制流三种基本结构顺序结构、选择结构、循环结构已经证明,任何程序均可只用这三种结构实现BÖhm,Corrado,andJacopiniGuiseppe."Flowdiagrams,Turingmachinesandlanguageswithonlytwoformationrules."CommunicationofACM,9(5):366-371,May1966.只用这三种结构的程序,叫结构化程序程序“必须”符合结构化规则流程图顺序结构选择结构truefalsetruefalse循环结构语句块(Block){}括住的若干
2、条语句构成一个语句块语句块内可以定义变量变量必须在语句块的开头定义变量仅在定义它的语句块内(包括下层语句块)有效(scope.c)同一个语句块内的变量不可同名,不同语句块可以同名(homonym.c)各司其职、下层优先尽量不要在下层语句块内定义变量,也尽量不要定义同名变量语句块可以用在任何可以使用语句的地方,但没有道理要乱加语句块if-else选择结构的一种最常用形式if(表达式)语句块1;else语句块2;语句块3表达式值非0时,执行语句块1,然后语句块3;表达式值为0时,执行语句块2,然后语句块3else部分可以没有。当表达式值为0时,直
3、接执行语句3if-else嵌套使用时,注意else和谁配套的问题if.c表达式!=0?YN语句块1语句块2语句块3else-ifif的一种扩展if(表达式1)语句块1;elseif(表达式2)语句块2;elseif(表达式3)语句块3;…………else语句块4;语句块5;else部分可以没有表达式1!=0?YN语句块1语句块2语句块5表达式2!=0?表达式3!=0?语句块3N语句块4NYYswitch多路选择switch(表达式){case整型常数1:语句1;case整型常数2:语句2;…………default:语句3;}default可
4、以没有现场编程完成计算器……不要忘记breakswitch和else-if的比较else-if比switch的条件控制更强大一些else-if可以依照各种逻辑运算的结果进行流程控制switch只能进行==判断,并且只能是整数判断switch比else-if更清晰两者都要尽量避免用得过多、过长,尤其不要嵌套得太多它们大大增加程序的分支,使逻辑关系显得混乱,不易维护,易出错循环——while,forwhile(表达式)语句块;for(表达式1;表达式2;表达式3)语句块;whilewhile(表达式)语句块1;语句块2;只要表达式的值为非0,就重
5、复执行语句块1,直到表达式值为0时止,开始执行语句块2表达式!=0?YN语句块1语句块2forfor(表达式1;表达式2;表达式3)语句块;首先执行表达式1。如果表达式2的值为非0,就重复执行语句块和表达式3,直到表达式2的值为0时止相当于:表达式1;while(表达式2){语句块;表达式3;}for的所有表达式均可省略表达式2!=0?YN语句块表达式3表达式1注意在for和while语句之后一般没有分号有分号表示循环体就是分号之前的内容,即循环体不存在while(i<100);i++;for(i=0;i<100;i++);printf("
6、%d",i);for通常有一个循环变量控制循环的次数,不要在循环体内改变这个变量循环——do-whiledo语句块1;while(表达式);语句块2;首先执行语句,然后判断表达式的值。如果表达式为0,继续向下执行,否则,再次执行语句,再次判断表达式的值语句块1会被执行至少一次表达式!=0?YN语句块1语句块2选择三种循环的一般思路如果循环次数已知,用for如果循环次数未知,用while如果循环体至少要执行一次,用do-while只是思路,不是定律死循环永远不会退出的循环为死循环for(;;){}while(1){}do{}while(1)除非
7、确实需要死循环,否则不要使用这样的形式。它们使循环的中止条件变得不明朗一般情况下,要极力避免死循环绝大多数程序不需要死循环。如果出现,往往都是bug时间过长的循环会造成“假死”现象,也要考虑解决break和continue对for、while、do-while循环进行内部手术break,退出循环continue,中断此次循环的执行,开始下一次break和continue少用为妙它们增加了循环执行的分支,break更增加了循环的出口它们可以用来处理程序异常,而尽量不要用来处理正常流程标号举例Error:同变量、函数的命名规则一样,后面加上一个冒
8、号,一般顶格书写goto举例gotoError;goto与标号(label)Dijkstra与gotoEdsgerW.Dijkstra,生于1930年,卒于2002
此文档下载收益归作者所有