C# 系列教程_8 循环语句 保姆级精讲(面向新手)

前置回顾

  • 顺序结构:代码从上到下执行一次
  • 分支判断(if/switch):选择性执行,代码最多跑一遍
  • 循环 :让一段代码重复执行,直到满足退出条件。

C# 4 种循环:

  1. while 先判断,后执行(有可能一次都不执行)
  2. do-while 先执行,后判断(至少执行 1 次)
  3. for:已知循环次数首选(计数器循环)
  4. foreach:专门遍历集合 / 数组(后面讲数组时重点用)

配套两个循环控制关键字:

  • break:立刻终止整个循环,跳出循环
  • continue:立刻结束本次循环,直接进入下一轮条件判断

学习路线:

  1. while 循环
  2. do-while 循环
  3. for 循环(最常用,重点)
  4. break 和 continue
  5. 嵌套循环
  6. foreach 简介
  7. 新手坑点汇总
  8. 实战练习

1 while 循环:先判断,再执行

语法:

cs 复制代码
while(布尔条件)
{
    //循环体:条件true时重复执行
}

执行流程:

  1. 检查括号内条件
  2. ✅true → 进入大括号执行循环体;执行完回到步骤 1 再次判断
  3. ❌false → 直接跳出 while 循环,继续执行循环后面代码

⚠️关键点:条件一开始就是 false,循环体一次都不会执行 ⚠️死循环大坑:循环内部必须有修改条件的代码,否则条件永远 true,无限循环!

示例 1:打印 1~5

cs 复制代码
using System;
namespace WhileDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            int i = 1; //循环计数器,初始化在循环外面
            while(i <= 5)
            {
                Console.WriteLine(i);
                i++; //修改计数器!靠近循环末尾,改变条件
            }
            Console.WriteLine("循环结束");
        }
    }
}

机理拆解,一步步走

  1. i=1,判断 1 <=5 → true → 打印 1 → i++ → i=2
  2. 判断 2 <=5 → true → 打印 2 → i++ → i=3
  3. 判断 3 <=5 → true → 打印 3 → i++ → i=4
  4. 判断 4 <=5 → true → 打印 4 → i++ → i=5
  5. 判断 5 <=5 → true → 打印 5 → i++ → i=6
  6. 判断 6 <=5 → false → 退出 while,打印 "循环结束"

如果删掉 i++;,i 永远等于 1,条件永远 true → 死循环,程序卡住。

示例 2:条件初始 false,循环不执行

cs 复制代码
int i = 10;
while(i <=5)
{
    Console.WriteLine(i);
    i++;
}
Console.WriteLine("结束");

第一次判断 10<=5 → false,循环体一次不跑。


2 do-while 循环:先执行,后判断

语法:

cs 复制代码
do
{
    //循环体,先执行一次
}while(布尔条件); //末尾分号!新手容易漏掉

执行流程:

  1. 先直接执行一次大括号内循环体
  2. 再判断 while 条件
  3. true → 回到 do 继续循环;false → 跳出循环

特点:无论条件真假,循环体至少执行 1 次

示例:打印 1~5

cs 复制代码
static void Main()
{
    int i = 1;
    do
    {
        Console.WriteLine(i);
        i++;
    } while (i <= 5); //⚠️末尾分号!
    Console.WriteLine("循环结束");
}

while 和 do-while 对比小例子

cs 复制代码
int i = 10;
Console.WriteLine("while:");
while(i <=5)
{
    Console.WriteLine(i);
    i++;
}

Console.WriteLine("do-while:");
int j = 10;
do
{
    Console.WriteLine(j);
    j++;
} while (j <=5);

运行结果: while 无输出;do-while 会打印 10,然后判断条件不成立退出。

使用场景:需要至少执行一次,比如:输入密码,先输入,再判断是否正确。

实战示例:密码输入

cs 复制代码
static void Main()
{
    string pwd;
    do
    {
        Console.Write("请输入密码:");
        pwd = Console.ReadLine();
    } while (pwd != "123456");
    Console.WriteLine("密码正确,登录成功");
}

机理:先让用户输入密码,再判断,满足 "至少输入一次" 的需求。


3 for 循环:已知循环次数,最常用⭐

while 的计数器分散在外面、循环内部;for 把初始化、条件、迭代全部写在一行,结构集中。

语法:

cs 复制代码
for(表达式1; 表达式2; 表达式3)
{
    //循环体
}
  • 表达式 1:计数器初始化,只执行【一次】,循环开始前
  • 表达式 2:循环条件(bool),每次循环前判断
  • 表达式 3:迭代更新(i++),循环体执行完之后执行

三个部分用**分号;**隔开,不是逗号!

执行顺序(牢记这个顺序):

  1. 执行【表达式 1】(仅一次)
  2. 判断【表达式 2】条件
    • true → 执行循环体代码 → 执行【表达式 3】→回到步骤 2
    • false → 直接跳出 for 循环

示例:打印 1~5

cs 复制代码
static void Main()
{
    for(int i = 1; i <=5; i++)
    {
        Console.WriteLine(i);
    }
    Console.WriteLine("循环结束");
}

机理拆解,逐轮跟踪

  1. int i=1(只执行一次)
  2. 判断 i<=5 → true,打印 1 → 执行i++,i=2
  3. 判断 i<=5 → true,打印 2 → 执行i++,i=3
  4. 判断 i<=5 → true,打印 3 → 执行i++,i=4
  5. 判断 i<=5 → true,打印 4 → 执行i++,i=5
  6. 判断 i<=5 → true,打印 5 → 执行i++,i=6
  7. 判断 i<=5 → false,退出循环

变量作用域:int i 在 for 括号内定义,i 只能在 for 循环内部使用,循环外部访问不到。

示例:倒序打印 5 ~ 1

cs 复制代码
for(int i =5; i >=1; i--)
{
    Console.WriteLine(i);
}

for 循环三部分都可以省略(不推荐新手写) for(;;) 三个都空,条件默认为 true → 死循环。

✅什么时候选 for:明确知道循环要执行多少次 (循环 10 次、遍历 10 个数字) ✅什么时候选 while:不知道循环多少次,只知道停止条件(密码输入,直到输入正确)


4 break 与 continue 循环控制关键字

break:立刻终止整个循环,跳出循环

只要执行break;,循环直接结束,后面循环不再执行。

示例:找到数字 3 就停止循环

cs 复制代码
for(int i =1; i <=5; i++)
{
    if(i == 3)
    {
        break; //直接跳出for循环
    }
    Console.WriteLine(i);
}
Console.WriteLine("循环结束");

输出:

cs 复制代码
1
2
循环结束

机理:i=3 触发 break,整个 for 循环直接终止,后面 i=4、i=5 不再执行。

continue:结束当前这一轮循环,直接进入下一轮条件判断

continue:本轮后面代码不执行,不会跳出整个循环,直接跳到迭代 / 条件判断。

示例:遇到 3 跳过,不打印 3

cs 复制代码
for(int i =1; i <=5; i++)
{
    if(i == 3)
    {
        continue; //跳过本轮剩下代码,直接i++,下一轮判断
    }
    Console.WriteLine(i);
}

输出:

cs 复制代码
1
2
4
5

机理:i=3 触发 continue → Console.WriteLine (i) 被跳过 → 执行 i++,进入下一轮判断。

⚠️ while 里面使用 continue 小心死循环! while 中 continue 会直接跳回条件判断,如果 continue 前面没有写 i++,计数器不会更新,死循环。

cs 复制代码
int i = 1;
while(i <=5)
{
    if(i ==3)
    {
        continue; //⚠️直接跳去判断 i<=5,i永远等于3!死循环
    }
    Console.WriteLine(i);
    i++;
}

#5 嵌套循环:循环里面再套循环

外层循环执行一次,内层循环完整跑完一整轮。 常用场景:打印九九乘法表、二维表格。

示例:打印 2 行,每行打印 3 个星号

cs 复制代码
static void Main()
{
    //外层:控制行数
    for(int row = 1; row <=2; row++)
    {
        //内层:控制一行里面的星号数量
        for(int col = 1; col <=3; col++)
        {
            Console.Write("*"); //不换行打印
        }
        Console.WriteLine(); //一行结束,换行
    }
}

输出:

cs 复制代码
***
***

机理:

  1. row=1:进入外层循环,内层循环 col 从 1 到 3,打印 3 个 * → 换行;内层结束
  2. row=2:进入外层循环,内层循环 col 从 1 到 3,打印 3 个 * → 换行;内层结束
  3. row=3,条件不满足,外层循环结束。

break 只能跳出当前所在一层循环,不会一次性跳出多层嵌套循环。


#6 foreach 循环(拓展,遍历数组 / 集合) foreach 专门用来遍历数组、集合,没有计数器,不能修改元素。 语法:

cs 复制代码
foreach(var item in 数组)
{

}

示例:

cs 复制代码
int[] arr = {10,20,30};
foreach(int num in arr)
{
    Console.WriteLine(num);
}
相关推荐
麦麦麦当劳大王9 小时前
【油猴脚本】Boss直聘 岗位职责复制
开发语言·前端·javascript
starzy19909 小时前
深入理解Scala Map:从实现原理到工程实践
开发语言·后端·scala
rockey6279 小时前
AScript之LINQ扩展
c#·.net·script·动态脚本
只睡四小时10 小时前
Three.js Sub-tick:漏判 60.7%→0
开发语言·javascript·性能优化·ecmascript·游戏开发·three.js·碰撞检测
码农小河6610 小时前
基于SSM+JSP的高校专业信息管理系统【附源码+数据库】
java·开发语言·数据库
东鹏特饮12 小时前
系统运维(传统/通用运维)面试题
开发语言·php
今天要早睡_13 小时前
C++01_入门基础复习
开发语言·c++
黑马程序员毕设13 小时前
基于 Java 的餐饮点餐系统设计与应用报告
java·开发语言
1-1=015 小时前
C# 委托与事件
开发语言·c#