Administrator
发布于 2026-06-22 / 1 阅读
0
0

C++ 循环结构:for/while/do-while、break 与 continue 流程控制详解

一、前言

分支实现单次条件判断,循环可以重复执行一段代码,是批量处理、遍历数据的核心语法。本篇讲解三类循环结构、循环跳转关键字,搭配求和、打印九九乘法表、猜数字小游戏实战。

二、while 循环(先判断,后执行)

语法:循环条件为 true 时持续执行,条件 false 直接跳出

cpp

运行

while(循环条件)
{
    循环体代码;
}

示例:输出 1~10 全部数字

cpp

运行

#include <iostream>
using namespace std;
int main()
{
    int i = 1;
    while(i <= 10)
    {
        cout << i << " ";
        i++; // 计数器自增,避免死循环
    }
    return 0;
}

⚠️ 死循环风险:循环体内必须修改判断变量,否则条件永远成立,程序卡死。

三、do-while 循环(先执行,后判断)

和 while 核心区别:无论条件是否成立,循环体至少执行一次

cpp

运行

do
{
    循环体;
}while(条件); // 末尾必须加分号

示例:输入密码,错误则重复输入,正确退出

cpp

运行

int pwd;
do
{
    cout << "请输入6位密码:";
    cin >> pwd;
    if(pwd != 123456)
    {
        cout << "密码错误,请重新输入\n";
    }
}while(pwd != 123456);
cout << "密码正确,登录成功";

四、for 循环(已知循环次数首选,结构紧凑)

标准三段式语法:

cpp

运行

for(初始化计数器; 循环条件; 计数器更新)
{
    循环体;
}

执行顺序:

  1. 初始化(仅运行 1 次)

  2. 判断条件,false 直接退出

  3. 条件 true 执行循环体

  4. 执行计数器更新,回到步骤 2

示例 1:1~100 求和

cpp

运行

int sum = 0;
for(int i = 1; i <= 100; i++)
{
    sum += i;
}
cout << "1到100总和:" << sum;

示例 2:省略三段式写法(等价 while 死循环)

cpp

运行

for(;;)
{
    cout << "无限循环";
}

五、循环跳转关键字 break /continue

1. break:直接终止当前循环,跳出循环块

场景:找到目标数据后立刻停止循环

cpp

运行

// 找到第一个能被7整除的数字
for(int i = 1; i <= 50; i++)
{
    if(i % 7 == 0)
    {
        cout << "第一个7的倍数:" << i;
        break;
    }
}

2. continue:跳过本次循环剩余代码,直接进入下一轮

场景:过滤不需要处理的数据

cpp

运行

// 只输出1~20的偶数
for(int i = 1; i <= 20; i++)
{
    if(i % 2 != 0)
    {
        continue; // 奇数跳过下面输出语句
    }
    cout << i << " ";
}

六、循环嵌套(多层循环,处理二维结构)

外层循环执行一次,内层循环完整跑完一轮,典型用途:打印九九乘法表

cpp

运行

#include <iostream>
using namespace std;
int main()
{
    // 外层控制行
    for(int i = 1; i <= 9; i++)
    {
        // 内层控制列
        for(int j = 1; j <= i; j++)
        {
            cout << j << "*" << i << "=" << i*j << "\t";
        }
        cout << endl; // 一行结束换行
    }
    return 0;
}

七、三种循环适用场景总结

  1. for:明确知道循环执行次数(遍历固定范围、数组)

  2. while:不确定循环次数,先判断再执行(读取数据、条件等待)

  3. do-while:必须至少执行一次(密码校验、菜单弹窗)

八、新手避坑

  1. for 循环分号位置写错:for(i=1;i<10;i++);{} 分号截断循环,大括号代码只执行一次

  2. do-while 末尾遗漏分号,编译报错

  3. 循环内忘记更新计数器,造成死循环

  4. break 仅跳出当前一层循环,嵌套循环无法一次性跳出所有层

九、综合实战:猜数字小游戏

cpp

运行

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int main()
{
    srand((unsigned int)time(NULL)); // 设置随机数种子
    int target = rand() % 100 + 1; // 生成1~100随机数字
    int guess;
    cout << "===== 猜数字游戏 1~100 =====" << endl;

    while(true)
    {
        cout << "输入你猜测的数字:";
        cin >> guess;
        if(guess > target)
        {
            cout << "猜大了,再小一点\n";
        }
        else if(guess < target)
        {
            cout << "猜小了,再大一点\n";
        }
        else
        {
            cout << "恭喜你猜对了!数字是:" << target;
            break;
        }
    }
    return 0;
}

十、下期预告

下一篇:C++ 一维、二维数组、字符数组与基础字符串操作实战


评论