C语言程序结构3:循环结构

2020-03-25 18:58:03 浏览数 (1)

循环结构可以减少代码重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供四种循环,即goto循环while循环、do while循环和for循环

四种循环可以用来处理同一问题,一般情况下它们可以互相代替换,但一般不提倡用goto循环,因为强制改变程序的顺序经常会给程序的运行带来不可预料的错误,在学习中我们主要学习while、do…while、for三种循环

一、for循环:

代码语言:javascript复制
for (表达式1; 表达式2; 表达式3) //小括号后面没有分号,如加分号则表示循环体是空语句{  循环体}

表达式1:循环控制变量初始化,也可以在for之前初始化(故可以为空);

表达式2:循环判断条件,满足条件执行循环体,不满足则结束循环,

为空则表示条件恒成立(应在循环体内设置break条件,否则死循环);

表达式3:循环控制变量增量(变化也可以写在循环体内,甚至表达式2中,故也可为空)。

三个表达式中间用分号隔开,for后面小括号里面有且只能有两个分号,不能多也不能少。表达式1初始化有多个的话用逗号隔开;表达式3增量有多个也用逗号隔开。

三个表达式可以全为空:for(; ;) {循环体}

注:for循环()中的表达式1、3都可以省略,但标准的for循环中,应该把循环控制变量的初始化,增量都放在()当中,并且在循环体中不建议更改循环控制变量。表达式2省略表示条件恒成立(应在循环体内设置break循环终止条件,否则死循环)。

循环执行步骤

第一,先进行循环控制变量初始化;

第二,执行循环终止条件,如果判断结果为真,则进入第三步;如果为假则循环终止并退出;

第三,执行循环体;

第四,执行循环控制变量增量,转入第二步;   

二、while循环:

代码语言:javascript复制
循环控制变量初始化语句;while(循环判断条件)//小括号后面没有分号,如加分号则表示循环体是空语句{  循环体  循环控制变量增量 //有时增量和循环体没有明显界限}

循环执行步骤:

第一,先进行循环控制变量初始化(在while之前);

第二,判断循环终止条件,如果判断结果为真,则进入第三步;如果为假则不执行循环体;

第三,执行循环体;

第四,执行循环控制变量增量,转入第二步。

三、do while循环:

代码语言:javascript复制
循环控制变量初始化语句;do{  循环体  循环控制变量增量 //有时增量和循环体没有明显界限}while (循环判断条件);  //注意最后这里有个分号

循环执行步骤:

第一,先进行循环控制变量初始化(在do while之前);

第二,执行循环体;

第三,执行循环控制变量增量;

第四,判断循环终止条件,如果判断结果为真,则返回第二步;如果为假则直接退出循环;

四、总结:

1、for、while循环都是先判断后执行,do while循环是先执行后判断,等循环一次之后,其实都是一样的。for、while循环如果第一次判断就不成立,则循环体执行次数为0;但do while循环是后判断,所以循环体至少执行了一次。

2、三种循环里面,判断条件都是循环继续的条件,而不是循环终止条件(很多同学在这犯错)。只有在循环体里面添加 if(判断条件) break; ,这个条件才是循环终止条件。

3、循环体里面的break语句,判断条件满足执行到break的话,结束当前整个循环;continue语句的话是结束当前这一次循环,继续下一次判断循环(对于多重循环,注意break、continue在哪一层)。

4、goto语句与if构成的循环,是不能用break和 continue语句进行控制的。现在都不建议使用goto语句。

5、用while和do…while循环时,循环变量的初始化的操作应在循环体之前,而for循环一般在表达式1中进行的。

6、常用的三种循环结构学习的重点在于弄清它们相同与不同之处,以便在不同场合下使用,这就要清楚三种循环的格式和执行顺序,将每种循环的流程图理解透彻后就会明白如何替换使用。

如把while循环的例题,用for语句重新编写一个程序,这样能更好地理解它们的作用。特别要注意在循环体内应包含趋于结束的语句(即循环变量值的改变),否则就可能成了一个死循环,这是初学者的一个常见错误。

7、嵌套:对于多重巡环,只是在循环体里面包含了另一个循环结构。理清楚结构层次,不难理解。循环体里面可以包含循环,也可以是分支。顺序结构、分支结构和循环结构并不彼此孤立的,在循环中可以有分支、顺序结构,分支中也可以有循环、顺序结构,其实不管哪种结构,我们均可广义的把它们看成一个语句

0 人点赞