首页 > 编程笔记

C# while和do while循环的用法

循环表示重复执行某种操作。在 C# 中,常用的循环有 while 循环、do…while 循环和 for 循环。另外,各种循环之间还可以嵌套使用,并且可以通过设置条件来跳出循环。

本文我们来了解 while 循环和 do while 循环。

C# while 循环

while 循环用来实现“当型”循环结构,它的语法格式如下:
while(表达式)
{
    语句
}
“表达式”一般是一个关系表达式或一个逻辑表达式,表达式的值应该是一个逻辑值:真或假(True 或 False)。当表达式的值为 True 时,开始循环执行语句;当表达式的值为 False时,退出循环,执行循环外的下一条语句。

循环每次都是执行完语句后回到表达式处重新开始判断,重新计算表达式的值。

C# while 循环的流程图如图1所示。

C# while 循环的流程图
图1:C# while 循环的流程图

【示例1】使用 while 循环实现 1 到 100 的累加,代码如下:
static void Main(string[] args)
{
      int iNum = 1;        //iNum从1到100递增
      int iSum = 0;        //记录每次累加后的结果
      while (iNum <= 100)        //iNum <= 100 是循环条件
      {
          iSum += iNum;          //把每次的iNum的值累加到上次累加的结果中
          iNum++;               //每次循环iNum的值加1
      }
      //输出结果
      Console.WriteLine("1到100的累加结果是" + iSum);
      Console.ReadLine();
}

代码注解


程序运行结果如下:
1到100的累加结果是5050

常见错误

如果将【示例1】代码中 while 语句后面的大括号去掉,将代码修改成如下形式,重新编译并运行程序,会没有任何结果。

造成这种情况的原因是当 while 语句循环体中的语句大于一条时,需要把循环体放在大括号{}中,如果 while 语句后面没有大括号,则 while 循环只会循环 while 语句后的第一条语句。

对于下面的代码,则没有对循环变量 iNum 递增的过程,于是每次进入循环时,iNum 的值都是1,从而形成死循环,永远不会执行后面的语句。
static void Main(string[] args)
{
     int iNum = 1;           //iNum从1到100递增
     int iSum = 0;           //记录每次累加后的结果
     while (iNum <= 100)    //iNum <= 100 是循环条件
         iSum += iNum;      //把每次的iNum的值累加到上次累加的结果中
         iNum++;           //每次循环iNum的值加1
     Console.WriteLine("1到100的累加结果是" + iSum);        //输出结果
     Console.ReadLine();
}
几点注意:

C# do…while 循环

有些情况下无论循环条件是否成立,循环体中的代码都要被执行一次,这时可以使用 do…while 循环。

do…while 循环的特点是先执行循环体,再判断循环条件,其语法格式如下:
do
{
     语句
}
while(表达式);
do 为关键字,必须与 while 配对使用。

do 与 while 之间的语句称为循环体,该语句是用大括号{}括起来的复合语句。循环语句中的表达式与 while 语句中的相同,也为关系表达式或逻辑表达式。

但值得注意的是,do...while 语句后一定要有分号;

do…while 循环的流程图如图2所示。

图2:do…while 循环的流程图
图2:do…while 循环的流程图

从图2中可以看出,当程序运行到 do…while 时,会先执行一次循环体的内容,然后判断循环条件;当循环条件为 True 的时候,重新返回执行循环体的内容;如此反复,直到循环条件为 False,循环结束,程序执行 do…while 循环后面的语句。


【示例2】使用 do…while 循环编写程序实现 1 到 100 的累加,代码如下:
static void Main(string[] args)
{
     int iNum = 1;                     //iNum从1到100递增
     int iSum = 0;                     //记录每次累加后的结果
     do
     {
          iSum += iNum;              //把每次的iNum值累加到上次累加的结果中
          iNum++;                    //每次循环iNum的值加1
     } while (iNum <= 100);          //iNum <= 100 是循环条件
     Console.WriteLine("1到100的累加结果是" + iSum); //输出结果
     Console.ReadLine();
}

代码注解

上面的代码将判断条件 iNum <= 100 放到了循环体后面,这样,无论 iNum 是否满足条件,都将至少执行一次循环体。

while和do…while语句的区别

C# while 语句和 do…while 语句都用来控制代码的循环,但 while 语句适用于先进行条件判断,再执行循环体的场合;而 do…while 语句则适用于先执行循环体,再进行条件判断的场合。

具体来说,使用 while 语句时,如果条件不成立,则循环体一次都不会执行;而如果使用 do…while 语句,即使条件不成立,程序也至少会执行一次循环体。

推荐阅读