程序的循环控制
本篇文章将对三种循环结构———do-while循环 while循环 for循环进行逐一分析和比较。
循环结构的三个要素:循环变量、循环体、循环终止条件。
·(一)do-while循环
举个例子
do是“执行”的意思,而while是“在····期间”的意思,大括号内部的内容称为执行语句,也称循环体。而根据do语句的处理流程,只要while()中的表达式判断结果不为0,语句就会循环执行,反之,若为0,则循环结束。
这里特别要注意对判断结果的理解,这里判断结果为0指的是假,不为0指的是真,并不是判断内部某个变量的运算结果是否为零!!!
看上面这个例子,系统在弹出是否继续语句后会让我们选择输入0(YES)或者1(NO),从而判断是否继续循环,这里很多初学者认为输入0就代表判断结果为0,循环结束,输入1或者其他非零数就代表判断结果不为0,循环继续,而实际情况却恰恰相反,我们不应该把目光放在输入的值上,而应该对输入的值是否等于0进行判断,若相等则为真(即不等于0),反之则为假(即等于0),而根据提示我们输入0(YES)和0相等,则结果为真,循环继续,输入其他的数循环就会结束。
还有一点值得注意的是:while();后有一个分号,这是有区别于后面讲的while循环的写法的,初学者经常会忘记打分号而出错。
·(二)while循环
同样举个例子
和do语句不同,在循环体执行前对循环的继续条件进行判断的是while语句
只要判断表达式的值不为0,则会一直重复执行循环体,当判断结果为0是时,循环结束。和do语句不同的是判断时间不一样,do语句是先循环再判断,而while语句是先判断再循环。而对于判断结果的理解和前面讲过的do语句一样,例如输入一个值3并赋值给no,然后判断3是否大于1,结果为真,执行循环,打印3,然后no--,结果为2,再返回开头判断2是否大于1,以此类推,直到no变为0,再进行判断,结果为假,循环结束。
注意!这里的while()后没有分号!!,要和do语句中的while区分开。
·(三)for循环
同样也举个例子
有图中可以看出,比起while语句,使用for语句实现循环会使程序更加简洁,易读。(图中注释部分用while循环效果和for循环效果是一样的)。但是对于初学者来说,for语句结构理解起来要比do和while循环语句要难理解一些。下面对for语句进行分析:
从图中便可清楚得出for语句中的三部分是如何组成的,分别对应while循环中的哪里。
其中我们需要注意的几点有:
A 预处理
表达式A仅在循环执行前执行一次。当程序无需预处理时,该表达式可以省略。
B 控制类表达式
其执行方式及判断是否循环的方法和上述两种语句一样,当省略表达式B时,通常默认控制式始终不为0,因此,除非使用break语句,否则将陷入死循环。
C 收尾处理
表达式C作为“收尾处理”或“下个循环的准备处理”,会在循环执行后被判断,执行。如果没有需要执行的任务,则该表达式可以省略。
下面对这三种循环语句进行比较:
除了以上区别,还有最主要的书写问题,do语句中的while有分号,while语句中的while没有分号,for括号内用两个分号隔开,且最后没有分号。
以上就是我对于c语言中三种循环语句的理解和看法,如有出入,欢迎指正。