亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

C++ while 与 do-while 循环:重复控制流完全掌握

C++ while 与 do-while 循环完全指南

深度解析 while 与 do-while 循环:语法、流程图、实战示例、无限循环陷阱与 for/while 选型指南。

循环是高效编程基石:避免代码重复。选择正确循环类型关乎代码可读性与可维护性。

C++ 三大循环:

  1. for 循环 —— 迭代次数已知时首选
  2. while 循环 —— 条件为真持续执行
  3. do...while 循环 —— 至少执行一次再判断条件

for 循环已在前文讲解,本文聚焦 while 与 do...while。


while 循环

语法:

while (condition) {
    // 循环体
}

执行流程:

关系/逻辑运算符详见 C++ 关系与逻辑运算符。


while 循环流程图

C++ while 与 do-while 循环:重复控制流完全掌握

示例 1:打印 1 到 5

#include <iostream>
using namespace std;

int main() {
    int i = 1;
    while (i <= 5) {
        cout << i << " ";
        ++i;
    }
    return 0;
}

输出

1 2 3 4 5

逐步执行表:

迭代变量i <= 5动作
1i=1true打印 1,i→2
2i=2true打印 2,i→3
3i=3true打印 3,i→4
4i=4true打印 4,i→5
5i=5true打印 5,i→6
6i=6false循环终止

示例 2:累加非负整数(负数终止)

#include <iostream>
using namespace std;

int main() {
    int number, sum = 0;
    cout << "Enter a number: ";
    cin >> number;

    while (number >= 0) {
        sum += number;
        cout << "Enter a number: ";
        cin >> number;
    }
    cout << "\nThe sum is " << sum << endl;
    return 0;
}

输出

Enter a number: 6
Enter a number: 12
Enter a number: 7
Enter a number: 0
Enter a number: -2
The sum is 25

持续读取非负数累加,负数结束循环。


do...while 循环

关键差异:先执行循环体,后判断条件,保证至少执行一次。

语法:

do {
    // 循环体
} while (condition);

执行流程:


do...while 流程图

C++ while 与 do-while 循环:重复控制流完全掌握

示例 3:打印 1 到 5

#include <iostream>
using namespace std;

int main() {
    int i = 1;
    do {
        cout << i << " ";
        ++i;
    } while (i <= 5);
    return 0;
}

输出

1 2 3 4 5

执行步骤:

迭代变量i <= 5动作
初始i=1未检查打印 1,i→2
1i=2true打印 2,i→3
2i=3true打印 3,i→4
3i=4true打印 4,i→5
4i=5true打印 5,i→6
5i=6false循环终止

示例 4:累加非负整数(do-while 版)

#include <iostream>
using namespace std;

int main() {
    int number = 0, sum = 0;
    do {
        sum += number;
        cout << "Enter a number: ";
        cin >> number;
    } while (number >= 0);
    cout << "\nThe sum is " << sum << endl;
    return 0;
}

输出 1

Enter a number: 6
Enter a number: 12
Enter a number: 7
Enter a number: 0
Enter a number: -2
The sum is 25

输出 2(首次输入负数)

Enter a number: -6
The sum is 0.

首次输入负数时,循环仍执行一次(加了初始值 0),然后退出。


无限循环

条件永不为假导致的无限循环:

// 无限 while
while (true) { /* ... */ }
// 无限 do-while
int count = 1;
do { /* ... */ } while (count == 1);

有意无限循环用于服务器/事件循环;无意则是逻辑 Bug,会耗尽资源直到程序被杀。


for vs while 选型指南

场景推荐循环理由
迭代次数编译期/运行期初始已知for三段式集中管理初始化/条件/更新,意图最清晰
次数依赖运行时动态条件(用户输入、文件读取、网络响应)while条件检查在前,语义匹配“满足条件才执行”
循环体必须至少执行一次(菜单交互、首次读取后处理)do...while后置条件保证首次执行
范围遍历(数组、STL 容器)范围-based for零索引管理,防越界,现代 C++ 首选

延伸练习

C语言

  1. 掌握 C# 条件逻辑:if、if-else、if-else if 与嵌套 if 语句完全指南
  2. 掌握 C# while 与 do-while 循环:语法、示例与最佳实践
  3. C++类与对象:面向对象编程实战指南
  4. C++ 动态内存管理:new 与 delete 专家级实战指南
  5. C++ 三种继承方式深度解析:public、protected 与 private
  6. C++ 友元函数与友元类:突破访问控制的利器
  7. C++ do-while 循环详解:语法、实战示例与嵌套循环
  8. while 与 do-while 循环深度对比:原理、语法与实战案例全解析
  9. C++日期时间完全指南:ctime库、tm结构体与格式化输出
  10. C++重载机制深度解析:函数重载与运算符重载全攻略
  11. C++文件I/O完全指南:fstream读写、打开模式、定位指针与完整实例
  12. Java 回文数判断:while 循环与 for 循环两种算法实现