上一节我们学习了条件判断这一节来学习循环结构。循环让程序能够重复执行某段代码直到满足特定条件为止。C 提供了三种循环语句while、for和do-while。1. while 循环先判断后执行while循环在每次执行前先检查条件如果条件为true就执行循环体否则退出循环。1.1 基本语法while(条件){// 循环体条件为 true 时重复执行}1.2 实例打印 1 到 5#includeiostreamusingnamespacestd;intmain(){inti1;while(i5){couti ;i;}coutendl;return0;}输出结果1 2 3 4 5这里i是i i 1的简写每次循环让i增加 1。如果没有这行i永远是 1条件i 5永远成立就会变成死循环。1.3 实例计算 1 到 100 的和#includeiostreamusingnamespacestd;intmain(){intsum0;inti1;while(i100){sumi;// 等价于 sum sum ii;}cout1 到 100 的和为sumendl;return0;}输出结果1 到 100 的和为50502. for 循环计数循环的首选for循环把初始化、条件判断、更新三个部分写在一行结构更紧凑特别适合已知循环次数的场景。2.1 基本语法for(初始化;条件;更新){// 循环体}执行顺序初始化 → 判断条件 → 执行循环体 → 更新 → 判断条件 → ……2.2 实例打印 1 到 5#includeiostreamusingnamespacestd;intmain(){for(inti1;i5;i){couti ;}coutendl;return0;}这段代码和上面while的例子效果完全一样但写法更简洁。for循环把变量初始化、循环条件、变量更新都集中在一行逻辑一目了然。2.3 实例计算阶乘计算 5 的阶乘5! 5 × 4 × 3 × 2 × 1#includeiostreamusingnamespacestd;intmain(){intn5;intfactorial1;for(inti1;in;i){factorial*i;// 等价于 factorial factorial * i}coutn! factorialendl;return0;}输出结果5! 1202.4 for 循环的变体for循环的三个部分都可以省略但分号不能省// 省略初始化在循环外初始化inti0;for(;i5;i){...}// 省略更新在循环体内更新for(inti0;i5;){coutiendl;i;}// 无限循环不推荐除非配合 break 使用for(;;){// 无限循环}3. do-while 循环先执行后判断do-while循环先执行一次循环体再判断条件。也就是说无论条件是否成立循环体至少会执行一次。3.1 基本语法do{// 循环体至少执行一次}while(条件);// 注意这里有分号3.2 实例简单的猜数字游戏#includeiostream#includecstdlib#includectimeusingnamespacestd;intmain(){srand(time(0));// 用当前时间作为随机数种子inttargetrand()%1001;// 生成 1-100 的随机数intguess;do{cout猜一个 1-100 的数字;cinguess;if(guesstarget){cout大了endl;}elseif(guesstarget){cout小了endl;}}while(guess!target);cout恭喜你猜对了endl;return0;}这个例子中玩家至少要猜一次才能知道结果所以用do-while比while更合适。4. 循环控制break 和 continue4.1 break立即跳出循环#includeiostreamusingnamespacestd;intmain(){for(inti1;i10;i){if(i6){break;// 当 i 等于 6 时跳出循环}couti ;}coutendl;return0;}输出结果1 2 3 4 54.2 continue跳过本次循环#includeiostreamusingnamespacestd;intmain(){for(inti1;i10;i){if(i%20){continue;// 跳过偶数}couti ;}coutendl;return0;}输出结果1 3 5 7 95. 嵌套循环循环可以嵌套使用外层循环每执行一次内层循环就完整执行一遍。5.1 实例打印九九乘法表#includeiostreamusingnamespacestd;intmain(){for(inti1;i9;i){for(intj1;ji;j){coutj × i i*j\t;}coutendl;}return0;}这段代码会输出完整的九九乘法表。\t是制表符用来对齐输出。6. 三种循环怎么选简单原则已知循环次数 → 用for不知道循环次数但知道结束条件 → 用while循环体至少执行一次 → 用do-while实际开发中for用得最多while次之do-while较少使用。7. 常见错误7.1 死循环忘记更新循环变量会导致死循环// 错误i 永远是 1inti1;while(i5){coutiendl;// 忘记 i}7.2 循环变量作用域在for循环初始化中声明的变量只在循环内部有效for(inti0;i5;i){// i 在这里有效}// cout i; // 错误i 未定义8. 小结这一节我们学习了三种循环结构while适合条件循环for适合计数循环do-while适合至少执行一次的场景。重点掌握for循环的写法和break、continue的用法。下一节我们将学习函数让代码更加模块化。
【C++】零基础入门 · 第 4 节:循环结构(while、for、do-while)
发布时间:2026/5/25 17:03:51
上一节我们学习了条件判断这一节来学习循环结构。循环让程序能够重复执行某段代码直到满足特定条件为止。C 提供了三种循环语句while、for和do-while。1. while 循环先判断后执行while循环在每次执行前先检查条件如果条件为true就执行循环体否则退出循环。1.1 基本语法while(条件){// 循环体条件为 true 时重复执行}1.2 实例打印 1 到 5#includeiostreamusingnamespacestd;intmain(){inti1;while(i5){couti ;i;}coutendl;return0;}输出结果1 2 3 4 5这里i是i i 1的简写每次循环让i增加 1。如果没有这行i永远是 1条件i 5永远成立就会变成死循环。1.3 实例计算 1 到 100 的和#includeiostreamusingnamespacestd;intmain(){intsum0;inti1;while(i100){sumi;// 等价于 sum sum ii;}cout1 到 100 的和为sumendl;return0;}输出结果1 到 100 的和为50502. for 循环计数循环的首选for循环把初始化、条件判断、更新三个部分写在一行结构更紧凑特别适合已知循环次数的场景。2.1 基本语法for(初始化;条件;更新){// 循环体}执行顺序初始化 → 判断条件 → 执行循环体 → 更新 → 判断条件 → ……2.2 实例打印 1 到 5#includeiostreamusingnamespacestd;intmain(){for(inti1;i5;i){couti ;}coutendl;return0;}这段代码和上面while的例子效果完全一样但写法更简洁。for循环把变量初始化、循环条件、变量更新都集中在一行逻辑一目了然。2.3 实例计算阶乘计算 5 的阶乘5! 5 × 4 × 3 × 2 × 1#includeiostreamusingnamespacestd;intmain(){intn5;intfactorial1;for(inti1;in;i){factorial*i;// 等价于 factorial factorial * i}coutn! factorialendl;return0;}输出结果5! 1202.4 for 循环的变体for循环的三个部分都可以省略但分号不能省// 省略初始化在循环外初始化inti0;for(;i5;i){...}// 省略更新在循环体内更新for(inti0;i5;){coutiendl;i;}// 无限循环不推荐除非配合 break 使用for(;;){// 无限循环}3. do-while 循环先执行后判断do-while循环先执行一次循环体再判断条件。也就是说无论条件是否成立循环体至少会执行一次。3.1 基本语法do{// 循环体至少执行一次}while(条件);// 注意这里有分号3.2 实例简单的猜数字游戏#includeiostream#includecstdlib#includectimeusingnamespacestd;intmain(){srand(time(0));// 用当前时间作为随机数种子inttargetrand()%1001;// 生成 1-100 的随机数intguess;do{cout猜一个 1-100 的数字;cinguess;if(guesstarget){cout大了endl;}elseif(guesstarget){cout小了endl;}}while(guess!target);cout恭喜你猜对了endl;return0;}这个例子中玩家至少要猜一次才能知道结果所以用do-while比while更合适。4. 循环控制break 和 continue4.1 break立即跳出循环#includeiostreamusingnamespacestd;intmain(){for(inti1;i10;i){if(i6){break;// 当 i 等于 6 时跳出循环}couti ;}coutendl;return0;}输出结果1 2 3 4 54.2 continue跳过本次循环#includeiostreamusingnamespacestd;intmain(){for(inti1;i10;i){if(i%20){continue;// 跳过偶数}couti ;}coutendl;return0;}输出结果1 3 5 7 95. 嵌套循环循环可以嵌套使用外层循环每执行一次内层循环就完整执行一遍。5.1 实例打印九九乘法表#includeiostreamusingnamespacestd;intmain(){for(inti1;i9;i){for(intj1;ji;j){coutj × i i*j\t;}coutendl;}return0;}这段代码会输出完整的九九乘法表。\t是制表符用来对齐输出。6. 三种循环怎么选简单原则已知循环次数 → 用for不知道循环次数但知道结束条件 → 用while循环体至少执行一次 → 用do-while实际开发中for用得最多while次之do-while较少使用。7. 常见错误7.1 死循环忘记更新循环变量会导致死循环// 错误i 永远是 1inti1;while(i5){coutiendl;// 忘记 i}7.2 循环变量作用域在for循环初始化中声明的变量只在循环内部有效for(inti0;i5;i){// i 在这里有效}// cout i; // 错误i 未定义8. 小结这一节我们学习了三种循环结构while适合条件循环for适合计数循环do-while适合至少执行一次的场景。重点掌握for循环的写法和break、continue的用法。下一节我们将学习函数让代码更加模块化。