while与do while循环有何本质区别?

99ANYc3cd6
预计阅读时长 10 分钟
位置: 首页 C语言 正文

核心思想

无论是 while 还是 do-while,它们的核心目的都是重复执行一段代码,直到某个条件不再满足为止

c语言while和do while
(图片来源网络,侵删)

while 循环

while 循环是“先判断,后执行”的循环,也就是说,它会先检查循环条件,如果条件为真(true),才会执行循环体中的代码,如果一开始条件就为假,那么循环体一次都不会执行。

语法结构

while (条件表达式) {
    // 循环体
    // 当条件表达式为真时,这里面的代码会被重复执行
}

工作流程

  1. 计算条件表达式
  2. 判断结果
    • 如果结果为真(非零),则执行循环体内的代码。
    • 如果结果为假(0),则跳过整个 while 循环,继续执行循环后面的代码。
  3. 执行循环体后,程序会跳回第1步,重新计算条件表达式,然后重复这个过程,直到条件为假。

示例:打印 1 到 5

#include <stdio.h>
int main() {
    int i = 1; // 1. 初始化循环变量
    // 2. 检查循环条件
    while (i <= 5) {
        // 3. 执行循环体
        printf("%d ", i); // 输出 1 2 3 4 5
        // 4. 更新循环变量(非常重要!)
        i++; // 如果没有这一句,i 永远小于等于 5,就会造成“死循环”
    }
    printf("\n循环结束,\n");
    return 0;
}

while 循环的特点

  • 入口条件循环:在每次循环开始前检查条件。
  • 可能执行零次:如果初始条件不满足,循环体一次都不会执行,这在某些情况下非常有用,比如当数据为空时,就不需要处理了。

do-while 循环

do-while 循环是“先执行,后判断”的循环,它会先执行一次循环体,然后再检查循环条件,如果条件为真,就继续执行循环体,否则结束循环。

这意味着,do-while 循环至少会执行一次循环体,无论初始条件是什么。

语法结构

do {
    // 循环体
    // 这里的代码至少会被执行一次
} while (条件表达式); // 注意:这里的分号 ; 不能少!

工作流程

  1. 无条件执行一次 do { ... } 之间的循环体代码。
  2. 计算条件表达式
  3. 判断结果
    • 如果结果为真(非零),则程序跳回第1步,继续执行循环体。
    • 如果结果为假(0),则结束 do-while 循环,继续执行循环后面的代码。

示例:确保用户输入一个正数

#include <stdio.h>
int main() {
    int number;
    // 至少会执行一次,提示用户输入
    do {
        printf("请输入一个正数: ");
        scanf("%d", &number);
        // 如果用户输入了负数或零,这里会打印提示
        if (number <= 0) {
            printf("输入无效,请重新输入!\n");
        }
    } while (number <= 0); // 只要输入的数不是正数,就继续循环
    printf("您输入的正数是: %d\n", number);
    return 0;
}

do-while 循环的特点

  • 出口条件循环:在每次循环结束后检查条件。
  • 至少执行一次:循环体代码保证会执行一次,这在需要先执行某些操作,再根据结果决定是否继续的场景中非常有用,比如上面的输入验证例子。

while vs do-while 核心区别总结

特性 while 循环 do-while 循环
执行顺序 先判断,后执行 先执行,后判断
执行次数 可能执行 0 次(如果条件一开始就为假) 至少执行 1 次
语法结构 while (条件) { ... } do { ... } while (条件);
适用场景 当循环体可能不需要执行时,遍历一个可能为空的列表。 当循环体必须至少执行一次时,菜单选择、输入验证。

如何选择使用哪个?

这是一个非常常见的问题,一个简单的判断法是:

c语言while和do while
(图片来源网络,侵删)

问自己一个问题:“这段代码是否有可能一次都不执行?”

  • 如果答案是“是”,那么应该使用 while 循环。
    • 例子:遍历一个文件中的所有行,如果文件是空的,一行都不需要处理。
  • 如果答案是“否”,代码无论如何都必须先执行一次,那么应该使用 do-while 循环。
    • 例子:显示一个主菜单,并等待用户选择,无论用户选什么,菜单都必须先显示出来。

容易出错的地方

  1. 忘记更新循环变量:在 while 循环中,如果忘记在循环体内更新循环控制变量(如 i++),条件将永远为真,导致无限循环
  2. do-while 循环末尾的分号do-whilewhile(条件) 后面必须有一个分号 ,这是一个非常常见的语法错误,编译器通常会提示。
  3. 混淆 和 :在循环条件中,if (i = 5) 是一个赋值语句,它会把 5 赋给 i,并且表达式的值是 5(真),导致无限循环,正确的写法是 if (i == 5),用于判断是否相等。

练习

试着写一下,用 whiledo-while 分别实现以下功能:

  1. 从 10 倒数到 1。
    • 提示:使用 while 很自然,用 do-while 也可以,但 i 的初始值需要是 10。
  2. 实现一个简单的计算器,可以不断让用户输入数字进行运算,直到用户输入 'q' 退出。
    • 提示:这个逻辑天然适合 do-while,因为菜单和计算逻辑至少要执行一次。

希望这个详细的解释能帮助你完全理解 whiledo-while 循环!

c语言while和do while
(图片来源网络,侵删)
-- 展开阅读全文 --
头像
数据结构与程序设计C语言描述如何学懂?
« 上一篇 2025-12-14
织梦SQL如何同时调用多个栏目的文章?
下一篇 » 2025-12-14

相关文章

取消
微信二维码
支付宝二维码

目录[+]