C语言while和do while循环语句

在C语言中,while 是一种基本的循环,do while 是它的一种变体,有时候两者可以互换。

while 循环

while 语句适用于“当条件成立时重复操作”的循环控制结构,因而常被称作当型循环。其一般格式如下:
while (condition)
{
    循环体;           //一条或多条 C 语句
}

condition 就是一个关系判断表达式,它与 if 语句中的 condition 一样,其外面的括号是必需的。循环体是 while 语句的主体部分,是需要重复操作的一条或多条 C 语句,它包含多条语句时,其外侧必须加上花括号{ }

如果关系判断表达式 condition 的结果为“真”,就执行循环体里面的语句,之后再次判断 condition,如果结果还是为“真”,则再次执行循环体里面的语句,如此重复操作,直到 condition 的结果为“假”时,不再执行循环体里面的语句,而退出 while 语句,继续执行后续语句。

在循环体内必须存在一条语句,执行后能够改变 condition 中的变量的值,从而使 condition 的判断结果发生变化,出现结果为“假”的情况,终止循环。否则这个循环将会一直重复执行下去,出现“死循环”。

while 语句和 if 语句都是根据关系判断表达式 condition 的判断结果来决定是否执行其主体部分的语句块。两者的不同之处在于,当 condition 为“真”时,if 语句中的主体部分语句块只执行一次,而 while 语句中的循环体会重复执行多次,直到 condition 为“假”才终止循环(见图 1)。

if 语句的主体只执行一次,而 while 语句的循环体可以重复执行多次
图 1:if 语句的主体只执行一次,而 while 语句的循环体可以重复执行多次

另外,while 语句和 if 语句一样,不要在其主体部分外的花括号{ }后面加上分号。分号只出现在 while 语句循环体内的语句后面。

while 循环示例:

知识点总结

  1. 分号只出现在 while 语句循环体内的语句后面。
  2. 在循环体内必须存在一条语句,执行后能够改变 condition 中的变量的值。

do while 循环

do-while 语句适用于“重复操作直到条件不成立为止”的循环控制结构,因而常被称作直到型循环。其一般格式如下:
do
{
    循环体;    //一条或多条 C 语句
}
while (condition);

do-while 循环语句是在执行循环体之后才检查 condition 表达式的值,所以 do-while 语句的循环体至少执行一次。

跟 while 语句一样,要确保 do-while 语句的循环体部分修改了 condition 中的某个变量,从而改变 condition 的判断结果,能够结束循环,否则循环将永远重复下去,成为“死循环”。
特别注意:和 while 语句不一样的是,要在 do-while 语句的 condition 外的括号后面加上分号。
do while 循环示例:

知识点总结

  1. 需要重复执行一段代码时,使用 while 或 do-while 循环语句。
  2. 不要在 while 语句的 condition 外的括号后面加上分号。
  3. 但要在 do-while 语句的 condition 外的括号后面加上分号。
  4. 不要在 while 或 do-while 语句的循环体外的花括号后面加上分号。
  5. 循环体内只有一条语句时,其外面的花括号可以不写。
  6. 确保 while 或 do-while 语句的循环体内有语句修改了 condition 中的某个变量值。否则循环将永远重复下去,成为“死循环”。

while语句和do-while语句的互换

do-while 语句和 while 语句都擅长于解决循环次数未知的重复操作,但两者在实际应用中还是有区别的:
  • do-while 语句是先执行循环体语句,后判断循环条件是否成立;while 语句是先判断循环条件是否成立,后执行循环体语句。
  • do-while 语句中,无论循环条件是否成立,总要执行一次循环体语句;while 语句中,如果循环条件不成立,则不执行循环体语句。

图 2 展示了 do-while 语句和 while 语句在流程图上的区别,以及在程序中相互转换的示例。

do-while 语句与 while 语句的互换
图 2:do-while 语句与 while 语句的互换

while 和 do while 循环综合示例: