您好,欢迎访问三七文档
流程控制前面我们看到的代码都是顺序执行的,这称为顺序结构。但有时候,顺序结构的代码是远远不够的。比如有些18禁的小电影只允许成年人观看,你因为年龄不够,儿童不宜。这就是选择。程序代码执行的顺序,称作流程控制。Ta有顺序、选择和循环三种结构。1.选择结构选择结构就是根据不同的情况执行不同的代码。也就是说,某些代码可能执行,也可能不执行。选择结构有两种基本类型:if和switch。①if语句A.最简单if语句B.if语句的控制范围C.if…else…语句D.if语句的嵌套E.if…elseif…语句(多分支)F.if语句示例(排序初探)G.if语句常见问题解析A.最简单if语句最简单if语句的格式:if(表达式)语句;功能:判断表达式是否为真,若真,则执行语句;若假,则执行下一条语句。B.if语句的控制范围if(表达式)语句1;语句2;当前情况下,if语句只能控制语句1的执行或不执行,不能控制语句2的执行或不执行。换句话说,语句2一定会执行。B.if语句的控制范围(续)if(表达式){语句1;语句2;}如果想让if语句控制多条语句的执行或不执行就必须把这些语句用{}括起来。C.if…else…语句if…else…语句的格式:if(表达式)语句1;else语句2;功能:判断表达式是否为真,若真,则执行语句1;否则,执行语句2。D.if语句的嵌套一个if语句又包含一个或多个if语句称为if语句的嵌套。Ta的格式:if(表达式)if(表达式)语句1;else语句2;elseif(表达式)语句3;else语句4;说明if语句的嵌套常用以解决比较复杂的选择问题,其中每条语句的执行都需经过多个条件共同决定。现作几点说明如下:a.任何if语句都可以嵌套。b.被嵌套的if语句本身还可以是嵌套的if语句。c.在多层嵌套的if语句中,else总是与离它最近且没有配对的if配对。E.if…elseif…语句(多分支)if…elseif…语句的格式:if(表达式1)语句1;elseif(表达式2)语句2;…else语句n;从上到下逐一判断表达式,当某个表达式为真,则执行其对应的语句,其余部分不执行。若所有表达式均为假,则执行语句n。F.if语句示例(排序初探)算法是一个宽泛的概念。学编程,就必须要了解基本的算法。那么排序算法就是其中的明珠。选择排序法是排序算法中的一种。其基本思想(以升序为例)是:首先,找出最小的数,放在第一个位置;然后,再找出第二小的数,放在第二个位置;以此类推,直到所有的数从小到大排序。G.if语句常见问题解析_1if(表达式);等价于:if(表达式);//这是一个空语句if语句常见问题解析_2if(表达式)语句1;else语句2;if(表达式);//错误语句1;else语句2;if语句常见问题解析_3if(表达式1)语句1;elseif(表达式2)语句2;…elseif(表达式m)语句m;else语句n;即使表达式1和表达式2都成立,也只会执行语句1。if语句常见问题解析_4if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;这样写语法上完全没有问题,但逻辑上会有漏洞。if语句常见问题解析_5if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;else(表达式4)语句4;这样写是错误的。改正方法:要么去掉(表达式4),要么在(表达式4)前加if。if语句常见问题解析_6if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;else(表达式4);语句4;这样写语法上OK,但逻辑上是错误的。②switch语句C语言虽然没有限制if…else…能够处理的分支数量,但当分支过多时,用if…else…处理会不太方便,而且容易出错。这时,我们就需要另一种选择结构--switch语句,用来代替多分支的if…else…语句。A.switch语句的格式switch(表达式){case常量表达式1:语句1;case常量表达式2:语句2;…case常量表达式n:语句n;default:语句n+1;}B.switch语句的执行过程a.先计算表达式的值,假设为m。b.从第一个case开始,依次比较各常量表达式和m的值。如果相等,就执行:后面的所有语句,直至语句结束或碰到break,而不管是否与剩下的case匹配;如果不相等,就跳过:后面语句,继续比较下一个case。c.如果比到最后一个常量表达式都找不到相等的,那么就执行default后面的语句。C.说明a.switch后面()里的表达式原则上允许为任意数据类型。但VC++6.0中只允许为整型或字符型。b.case后面必须是一个整数,或者是结果为整数的表达式,不能包含任何变量。c.default不是必须的。当没有default时,如果所有case都匹配失败,那么程序就没结果。动动脑判断下面的示例是否正确:case10:printf(…);case8+9:printf(…);case'A':printf(…);case'A'+19:printf(…);case9.5:printf(…);casea:printf(…);casea+19:printf(…);√√√√×××2.循环结构所谓循环结构,就是重复地执行同一段代码。比如,我们要计算1+2+3+…+100之和,就是重复99次加法运算。循环结构有三种基本类型:for、while和do-while。①for循环A.for循环的格式B.for循环的执行过程C.for循环的控制范围D.for循环的3个表达式A.for循环的格式for循环的一般格式:for(表达式1;表达式2;表达式3)语句;表达式1仅在第一次循环时执行,以后不再执行。表达式2一般是关系表达式,决定了是否还要继续下次循环。表达式3一般是自增或自减操作,使表达式2逐渐“不成立”。B.for循环的执行过程a.先执行表达式1。b.再执行表达式2,如果其值为真,则执行循环体,否则结束循环。c.执行完循环体后再执行表达式3。d.重复执行b.和c.,直至表达式2的值为假,就结束循环。b.和c.是一次循环,会重复执行,for循环的主要作用就是不断执行b.和c.。C.for循环的控制范围for(表达式1;表达式2;表达式3)语句1;语句2;当前情况下,for循环只能控制语句1执行的次数,无法控制语句2执行的次数。换句话说,语句2仅执行一次。多个for循环嵌套_1for(表达式1;表达式2;表达式3)for(表达式4;表达式5;表达式6)语句1;语句2;{}多个for循环嵌套_2for(表达式1;表达式2;表达式3)for(表达式4;表达式5;表达式6){语句1;语句2;for(表达式7;表达式8;表达式9)语句3;}D.for循环的3个表达式for循环中的表达式1(循环初始条件)、表达式2(是否循环条件)和表达式3(循环趋向结束条件)都可以省略,但;必须保留。下面以1~100的和为例。a.省略表达式1可以将表达式1移到for循环的前面:…inti=1,sum=0;for(;i=100;++i)sum+=i;…b.省略表达式2如果不做处理就会成为死循环:…for(i=1;;++i)sum+=i;…所谓死循环,就是是否循环条件永远成立,循环会一直执行下去,永不结束。死循环对程序的危害很大,一定要避免。c.省略表达式3不会修改表达式2(是否循环条件)中变量的值,可以在循环体中加入该语句:…for(i=1;i=100;){sum+=i;++i;}…d.省略表达式1和表达式3…i=1;for(;i=100;){sum+=i;++i;}…e.3个表达式同时省略for(;;)//语法上完全OK,无实际意义相当于:while(1)补充表达式1和表达式3可以是一般表达式也可以是逗号表达式。for(i=0,j=100;i=100;++i,--j)sum=i+j;表达式2一般是关系或逻辑表达式,也可是数值或字符,只要非零,就执行循环。for(;(c=getchar())!='\n';)printf(%c\n,c);②while循环while循环的一般格式:while(表达式)语句;先执行表达式,其值为真,则执行语句;执行完语句,再次执行表达式,如果为真,继续执行语句…如此循环往复,直至表达式为假,退出循环。while循环与for循环for(表达式1;表达式2;表达式3)语句;等价于:表达式1;while(表达式2){语句;表达式3;}while循环示例:回文数从键盘上输入一个整数,如果该数是回文数,返回YES,否则返回NO。(若任一自然数,将其各位数字反向排列所得自然数与其相等,则称这个自然数为回文数。如,12321是回文数;但12345不是回文数)③do-while循环do-while循环的一般格式:do{语句;}while(表达式);do-while循环与while循环的不同在于:它会先执行语句,然后再判断表达式是否为真,为真则继续循环;为假则终止循环。因此,do-while循环至少要执行一次语句。④跳出循环使用循环时,如果想提前结束循环(在不满足是否循环条件的情况下结束循环或进入下一次循环),可以使用break语句或continue语句。A.break语句当break用于switch语句时,会终止switch语句。当break用于循环时,会终止循环。break语句常和if语句一起使用,即满足条件时终止循环。break不能单独用于if语句。在多层嵌套的switch语句或循环中,break只能终止离Ta最近的switch语句或循环。B.continue语句continue语句用以跳过循环中剩余的语句而强行进入下一次循环。continue语句只能用于循环,常与if语句一起使用,即满足条件时进入下一次循环。continue语句与break语句的不同点在于:break语句用来终止循环,循环语句不再有执行的可能;continue语句用来结束本次循环,直接跳到下一次循环,如果是否循环条件成立,还会继续循环。小结for循环和while循环一般可以互相代替。对于while循环和do-while循环,循环体中应包含使循环趋向结束条件。用while循环和do-while循环时,循环初始条件的操作应在while和do-while语句之前完成,而for循环可以在内部实现。for循环是最常用的循环,它的功能强大,可以代替其他循环。
本文标题:流程控制
链接地址:https://www.777doc.com/doc-653510 .html