云计算百科
云计算领域专业知识百科平台

C++学习路线其一:入门篇:6.循环语句

目录

循环语句

for循环

举例说明

for 循环的执行流程

练习:(自己动手写一下)

while循环

举例说明

while 循环的执行流程

练习:(自己动手写一下)

do-while 循环(至少执行一次)

举例说明

do-while 循环的执行流程

练习:(自己动手写一下)

break和continue语句

break:直接退出整个循环(终止循环)

continue:跳过本次循环,继续下一次

循环注意事项

循环的使用建议

经典练习题

结尾


        同志们,我又来辣!今天给大家分享的是循环语句。废话不多说,直接开整!

循环语句

        在编程中,我们经常需要重复做同一件事:比如计算 1 到 100 的和、打印 10 遍 “Hello World”、让程序一直运行直到用户输入 “退出”。如果用顺序结构的代码,需要写 10 遍cout、写 100 次加法,代码又长又笨,还容易出错。

        而循环语句就是为了解决「重复执行某段代码」的问题 —— 它能让一段代码按照设定的规则,自动重复执行 N 次,直到满足停止条件为止。这是 C++ 三大程序结构(顺序、选择、循环)的最后一块核心拼图。

        C++ 中有三种核心循环语句:for、while、do-while

循环的 3 个核心要素:

        所有循环都离不开这 3 个要素,少一个要么循环不执行,要么变成「死循环」(永远停不下来):

  • 初始化:给循环的 “计数器” 赋初始值(比如跑步前先记 “已跑 0 圈”);
  • 循环条件:判断是否继续循环的规则(比如 “已跑圈数 < 5”);
  • 更新 / 迭代:每次循环后更新计数器(比如跑完 1 圈,把 “已跑圈数” 加 1)。
  • for循环

            for 循环是你提前告诉程序 “要循环多少次”,程序就按次数重复执行,次数到了就停。

            比如:“打印 5 遍 Hello World”“计算 1 到 100 的和”,用 for 循环最方便,代码结构一眼就能看出循环次数。

    for (初始化表达式; 循环条件表达式; 更新表达式)
    {
    // 循环体:要重复执行的代码
    重复执行的代码;
    }

    for循环:三个要素集中写,结构清晰,适用于知道「循环次数」的场景(比如循环 10 次、1 到 100)。

    举例说明

    // 初始化:已跑0圈 → 条件:已跑圈数 < 5 → 更新:每跑1圈加1
    for (int circle = 0; circle < 5; circle++)
    {
    cout << "正在跑第" << circle+1 << "圈" << endl; // 循环体:跑1圈的操作
    }

    • 初始化:int circle = 0 → 定义计数器变量,赋初始值(赋值操作只执行 1 次,在循环开始前执行);
    • 循环条件:circle < 5 → 每次循环前判断,结果为真(非 0)就执行循环体,为假(0)就退出;
    • 更新表达式:circle++ → 每次循环体执行完后执行,更新计数器;
    • 循环体:大括号里的代码 → 条件为真时重复执行的内容

    注:循环体的代码如果只有单行可省略大括号,但还是建议加上大括号,更清晰

    for (int circle = 0; circle < 5; circle++)
    cout << "正在跑第" << circle+1 << "圈" << endl; // 循环体:跑1圈的操作

    for 循环的执行流程

    以 “跑 5 圈” 为例:

  • 执行初始化:circle = 0(只做 1 次);
  • 判断条件:0 < 5 → 真 → 执行循环体(打印 “正在跑第 1 圈”);
  • 执行更新:circle++ → circle 变成 1;
  • 判断条件:1 < 5 → 真 → 执行循环体(打印 “正在跑第 2 圈”);
  • 执行更新:circle++ → circle 变成 2;
  • …… 重复步骤 2-4,直到 circle=5;
  • 判断条件:5 < 5 → 假 → 退出循环。
  • 练习:(自己动手写一下)

    1:打印 10 遍 “Hello World”

    #include <iostream>
    using namespace std;
    int main() {
    // i从0到9,共10次循环
    for (int i = 0; i < 10; i++)
    {
    cout << "Hello World!第" << i+1 << "遍" << endl;
    }
    return 0;
    }

    2:计算 1 到 100 的和

    #include <iostream>
    using namespace std;
    int main() {
    int sum = 0; // 存储总和,初始值0
    // i从1到100,每次加1
    for (int i = 1; i <= 100; i++)
    {
    sum = sum + i; // 每次循环把i加到sum里
    }
    cout << "1到100的和是:" << sum << endl; // 结果:5050
    return 0;
    }

    3:打印 10 以内的偶数

    #include <iostream>
    using namespace std;
    int main() {
    cout << "10以内的偶数:" << endl;
    for (int i = 1; i <= 10; i++)
    {
    if (i % 2 == 0) // 判断是否为偶数
    {
    cout << i << " ";
    }
    }
    return 0;
    }

    while循环

            while 循环是你不用告诉程序要循环多少次,只告诉它 “什么时候停”,程序就一直循环,直到满足停止条件为止。

            比如:“让用户输入数字,直到输入 0 为止”“猜数字游戏,直到猜对为止”,不知道循环次数,用 while 最适合。

    // 步骤1:初始化计数器/变量(必须写在while外面)
    初始化表达式;

    // 步骤2:while循环核心
    while (循环条件表达式)
    {
    // 循环体:重复执行的代码
    重复执行的代码;

    // 步骤3:更新计数器(必须写在循环体里,否则死循环)
    更新表达式;
    }

    while循环:先判断条件再执行,灵活,适用于不知道「循环次数」,只知道「停止条件」(比如直到用户输入 0 为止)。

    举例说明

    int grape = 5; // 初始化:盘子里有5颗葡萄
    while (grape > 0) // 条件:葡萄数>0(有葡萄就继续吃)
    {
    cout << "吃了1颗葡萄,还剩" << grape-1 << "颗" << endl;
    grape–; // 更新:每吃1颗,葡萄数减1
    }
    cout << "葡萄吃完了!" << endl;

    while 循环的执行流程

  • 执行初始化(只做 1 次);
  • 判断循环条件:
    • 真 → 执行循环体 → 执行更新 → 回到步骤 2;
    • 假 → 退出循环;
  • 执行循环后的代码。
  • 练习:(自己动手写一下)

    1:用户输入数字,直到输入 0 为止

    #include <iostream>
    using namespace std;
    int main() {
    int num;
    cout << "请输入数字(输入0退出):" << endl;
    cin >> num; // 初始化:先输入一次数字

    while (num != 0) // 条件:输入的数字不是0
    {
    cout << "你输入的数字是:" << num << endl;
    cin >> num; // 更新:重新输入数字(关键!否则死循环)
    }
    cout << "输入了0,程序退出!" << endl;
    return 0;
    }

    2:猜数字游戏(直到猜对为止)

    #include <iostream>
    using namespace std;
    int main() {
    int target = 7; // 要猜的数字
    int guess;
    cout << "猜数字游戏(1-10):" << endl;
    cin >> guess;

    while (guess != target) // 没猜对就继续猜
    {
    cout << "猜错了!再试试:" << endl;
    cin >> guess;
    }
    cout << "恭喜你,猜对了!" << endl;
    return 0;
    }

    do-while 循环(至少执行一次)

            do-while 循环是「先做事,后检查」—— 不管条件满足不满足,先执行一次循环体,再判断条件是否继续循环。

            比如:“密码输入”—— 必须先让用户输一次密码,再判断对不对,不对就继续输,这时候用 do-while 最贴合需求。

    它和 while 的唯一区别:

    • while 是 “先判断后执行”(可能一次都不执行)
    • do-while 是 “先执行后判断”(至少执行一次)

    // 步骤1:初始化计数器/变量
    初始化表达式;

    // 步骤2:do-while核心
    do
    {
    // 循环体:至少执行一次的代码
    重复执行的代码;

    // 步骤3:更新计数器
    更新表达式;
    } while (循环条件表达式); // 注意:末尾必须加分号!

    举例说明

    string pwd; // 存储密码
    do
    {
    cout << "请输入密码:" << endl;
    cin >> pwd; // 先输入一次密码(至少执行)

    } while (pwd != "123456"); // 密码不对就继续输

    cout << "密码正确,登录成功!" << endl;

    do-while 循环的执行流程

  • 执行初始化(只做 1 次);
  • 执行循环体(必须做 1 次);
  • 执行更新表达式;
  • 判断循环条件:
    • 真 → 回到步骤 2,继续循环;
    • 假 → 退出循环;
  • 执行循环后的代码。
  • 练习:(自己动手写一下)

    密码验证

    #include <iostream>
    #include <string> // 用string需要包含这个头文件
    using namespace std;
    int main() {
    string correct_pwd = "666888"; // 正确密码
    string input_pwd;

    do
    {
    cout << "请输入登录密码:";
    cin >> input_pwd;
    if (input_pwd != correct_pwd)
    {
    cout << "密码错误,请重新输入!" << endl;
    }
    } while (input_pwd != correct_pwd); // 密码不对就循环

    cout << "密码正确,成功登录系统!" << endl;
    return 0;
    }

    break和continue语句

            学会了基本循环后,还需要掌握两个关键字,才能更灵活地控制循环 ——break(跳出循环)和continue(跳过本次循环),这是循环的 “进阶操作”,也是实际开发中高频使用的技巧。

    break:直接退出整个循环(终止循环)

    break的作用:

            一旦执行到 break,立刻跳出当前所在的循环,循环直接结束,后面的代码都不执行。

    举例:循环 10 次,但遇到 5 就退出

    #include <iostream>
    using namespace std;
    int main() {
    for (int i = 1; i <= 10; i++)
    {
    if (i == 5)
    {
    break; // 遇到5,退出整个循环
    }
    cout << "当前数字:" << i << endl;
    }
    cout << "循环结束!" << endl;
    return 0;
    }
    输出:
    当前数字:1
    当前数字:2
    当前数字:3
    当前数字:4
    循环结束!

    continue:跳过本次循环,继续下一次

    continue的作用:

            跳过本次循环体中剩下的代码,直接执行更新表达式,进入下一次循环判断。

    举例:打印 1-10,跳过偶数

    #include <iostream>
    using namespace std;
    int main() {
    for (int i = 1; i <= 10; i++)
    {
    if (i % 2 == 0)
    {
    continue; // 是偶数就跳过本次循环
    }
    cout << "当前数字:" << i << endl; // 只有奇数会执行这句
    }
    return 0;
    }
    输出:
    当前数字:1
    当前数字:3
    当前数字:5
    当前数字:7
    当前数字:9

    通俗理解:

    • break终止整个循环,相当于跑步时突然肚子疼,直接停跑,不跑了
    • continue跳过本次循环,相当于跑步时遇到水坑,绕过去,继续跑下一圈

    循环注意事项

    1:for 循环的条件后加分号(死循环 / 循环不执行)

    // 错误:分号表示循环体结束,i++永远不执行,i一直是0,死循环
    for (int i=0; i<5; i++);
    {
    cout << i;
    }

    // 正确:for后不加任何符号,循环体写在{}里
    for (int i=0; i<5; i++)
    {
    cout << i;
    }

    2:while/do-while 忘记更新计数器(死循环)

    int num=5;
    // 错误:没有num = num -1,num一直是5,条件永远为真,死循环
    while(num>0)
    {
    cout << num;
    }

    // 正确:循环体里必须更新计数器
    while(num>0)
    {
    cout << num;
    num–; // 关键!每次减1
    }

    3:循环条件写死为真(无条件死循环)

    // 错误:条件是true,永远为真,死循环
    while(true)
    {
    cout << "一直输出";
    }

    // 正确:加break控制退出
    int i=0;
    while(true)
    {
    cout << i;
    i++;
    if(i>=5)
    break; // 到5就退出
    }

    4:do-while 末尾漏加分号(语法错误)

    // 错误:while后漏分号,编译报错
    do
    {
    cout << "test";

    }while (i<5)

    // 正确:末尾必须加分号
    do
    {
    cout << "test";

    }while (i<5);

    5:循环变量初始化错误(循环次数不对)

    // 错误:想循环5次,i从1开始,i<=5是5次,但新手容易写成i<5(只循环4次)
    for(int i=1; i<5; i++) // 只循环1-4,共4次
    {
    cout << i;
    }

    // 正确:根据需求选条件,1-5用i<=5,0-4用i<5
    for(int i=1; i<=5; i++) // 循环1-5,共5次
    {
    cout << i;
    }

    6:用 continue 时,更新语句写在 continue 后面(更新不执行)

    //错误
    int i = 1;
    while(i <= 5) {
    if(i == 3) {
    continue; // 当i=3时,会导致死循环
    }
    i++; // 当i=3时,i的更新操作被continue跳过,无法更新
    cout << i;
    }

    //正确实现
    int i = 1;
    while(i <= 5) {
    if(i == 3) {
    i++; // 在continue前更新
    continue;
    }
    i++; // 正常更新
    cout << i;

    }

    7:循环体是多行代码时省略大括号(逻辑错误)

    // 错误:只有cout属于循环,i++不属于,i一直是0,死循环
    int i=0;
    while(i<5)
    cout << i;
    i++;

    // 正确:多行循环体必须加{}
    while(i<5)
    {
    cout << i;
    i++;
    }

    8:浮点型变量做循环条件(精度问题,循环次数不对)

    // 错误:浮点数存储不精确,0.1+0.2≠0.3,循环可能多执行/少执行
    for(double i=0.1; i<=1.0; i+=0.1)
    {
    cout << i;
    }

    // 正确:用整数做循环条件,内部换算成浮点型
    for(int i=1; i<=10; i++)
    {
    double num = i * 0.1; // 0.1、0.2…1.0
    cout << num;
    }

    循环的使用建议

            很多人学完三种循环后,不知道该用哪个,记住下面的口诀,一眼就能选对:

  • 知道循环次数 → 用 for(比如循环 10 次、1 到 100);
  • 不知道次数,只知道停止条件 → 用 while(比如直到输入 0 为止);
  • 必须至少执行一次 → 用 do-while(比如密码输入、菜单选择);
  • 所有能用 while/do-while 的场景,都能改用 for,反之亦然 —— 核心看「代码可读性」,哪种写出来更清晰就用哪种。
  • 经典练习题

  • 用 for 循环计算 1 到 10 的阶乘(1! =1,2! =1×2,…10! =1×2×…×10);
  • 用 while 循环实现:输入一个正整数,计算它的位数(比如输入 123,输出 3);
  • 用 do-while 循环实现:模拟 ATM 机菜单,至少显示一次菜单,直到用户选择 “退出”;
  • 用循环 + break 实现:打印 1 到 20,遇到能被 7 整除的数就退出循环。
  • 结尾

            OK,这就是C++学习路线其一:入门篇的第六篇文章,让大家学习了三种循环语句,以及他们之间的区别和具体使用时的注意事项。

            对于我的每篇文章,我都会将我的学习路线放在结尾,目前进度为:第一阶段 C++基本语法入门篇的第六篇。

            同志们,下一篇文章再见,我尽量会保持一周写三篇文章,记录我的学习过程,对于C++的学习我打算按照下面的路线去学,大家有比我学的快的也可以按照我的路线去看看自己接下来学什么。

           网课推荐:黑马程序员,同时给大家推荐一位大佬,b站搜索“恋恋风辰zack”,这个大佬的视频也是我一直在跟着学习的,讲的很好。

    学习路线:主攻高性能开发,如果大家像学习游戏引擎或嵌入式,可以自己设计一下学习路线

    第一阶段: C++基本语法,Git入门

    第二阶段:熟练STL,类,智能指针,模板,函数绑定等等

    第三阶段:Linux基础,多线程, 网络编程,设计模式

    第四阶段:gRPC,MySQL,Redis,JS,QT,消息队列,手写各种池子(线程池、内存池)

    第五阶段:进军高性能方向,开始学习 一致性哈希,分布式锁,Raft算法,网络优化、内存优化、并发优化

    第六阶段:真正实现工业级项目,在每一阶段的学习过程中都要写一些练手的小项目,可以在GitHub上找一下,积少成多,最终可以实现工业级项目

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » C++学习路线其一:入门篇:6.循环语句
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!