一、do...while循环核心语法

do
{
    循环体代码; // 先执行一次,再判断条件
} while (条件表达式);

⚠️ 语法注意:while后面必须加分号(;),这是容易遗漏的易错点,缺少分号会导致语法错误。

二、核心逻辑(重点)

执行顺序:先执行一次循环体 → 再判断条件表达式 → 条件成立则继续循环,条件不成立则终止循环。

核心特点:最少执行一次循环体,无论条件是否成立,循环体都会先执行一次(这是与while循环的核心区别)。

三、实战案例(全覆盖)

示例1:条件不成立的do...while循环(仍执行一次)

do // 先执行循环体,再判断条件
{
    Console.WriteLine("do...while流程控制"); // 必执行一次
} while (false); // 条件不成立,执行一次后终止循环

示例2:do...while实现“输入正数”校验

需求:用户输入小于0的数,要求一直重新输入,直到输入正数为止。

int num1;
do
{
    Console.WriteLine("请输入一个正数"); // 先提示,再接收输入(用户体验更友好)
    num1 = int.Parse(Console.ReadLine()); // 接收用户输入的数字
} while (num1 < 0); // 条件:num1小于0时,继续循环(重新输入)

优势:无需提前初始化num1,首次输入前会先给出提示,避免while循环“先输入、再提示”的弊端。

示例3:do...while计算输入数字的阶乘

需求:接收用户输入的数字,计算其阶乘(如8! = 8×7×6×...×1)。

int i1 = 1; // 计数器(初始值为1,阶乘从1乘起)
int sum3 = 1; // 存储阶乘乘积(初始值为1,避免乘法结果为0)

Console.WriteLine("请输入一个数");
int num3 = int.Parse(Console.ReadLine());// 接收用户输入
do
{
    sum3 *= i1; // 先执行乘积计算(sum3 = sum3 × i1)
    i1++; // 计数器自增,遍历到输入的数字
} while (i1 <= num3); // 再判断条件,成立则继续循环
Console.WriteLine(sum3); // 输出阶乘结果

说明:即使输入数字为0或1,循环体也会执行一次,计算结果正确(0!和1!均为1)。

while版本

//while实现输入数字的阶乘
Console.WriteLine("请输入一个数:");
int num2 = Convert.ToInt32(Console.ReadLine()); // 8!=8 * 7*6....1
int i = 1;//计数器
int sum2 = 1;// 代表乘积
string s = "";

while (i <= num2)
{
    sum2 *= i;// 计算乘积,把每次递增i乘以到sum2
    s += $"{i}*";// 字符串拼接 把i替换成递增量
    i++;// 递增量
}
//字符串s.Length字符串的长度属性
// s.Remove()移除字符串当中的其中一个字符,
//s. Length-1长度减1,从o开始,
//string sl= s.Remove(s.Length-1):
//Console.WriteLine(s1);//1*2*3*4*5*6*7*8
Console.WriteLine(s); //1*2*3*4*5*6*7*8*
Console.WriteLine(sum2);

注释部分为扩展

四、do...while与while循环的核心区别(重点对比)

对比维度

do...while循环

while循环

执行顺序

先执行循环体,再判断条件

先判断条件,再执行循环体

执行次数

最少执行1次

可能一次都不执行(条件不成立时)

语法细节

while后必须加“;”

while后无需加“;”

适用场景

需要“至少执行一次”的场景(如输入校验、初始化操作)

无需强制执行一次,根据条件决定是否执行(如遍历、计数)

五、易错点提醒(高频踩坑)

  • 遗漏while后的分号(;),导致语法错误;

  • 混淆do...while与while的执行顺序,误以为do...while也会“先判断后执行”;

  • 计算阶乘时,将乘积变量(如sum3)初始值设为0,导致最终结果为0(正确初始值为1);

  • 在循环体中忘记更新计数器(如i++),导致死循环。

六、核心总结

  • do...while核心:先执行、后判断,最少执行1次循环体;

  • 语法关键:while后必须加“;”,不可遗漏;

  • 适用场景:输入校验、初始化操作等需要“至少执行一次”的需求;

  • 与while的核心区别:执行顺序和最小执行次数不同;

  • 避免死循环:循环体中必须包含计数器更新(如i++)

更多推荐