一、前言
分支实现单次条件判断,循环可以重复执行一段代码,是批量处理、遍历数据的核心语法。本篇讲解三类循环结构、循环跳转关键字,搭配求和、打印九九乘法表、猜数字小游戏实战。
二、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 次)
判断条件,false 直接退出
条件 true 执行循环体
执行计数器更新,回到步骤 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;
}
七、三种循环适用场景总结
for:明确知道循环执行次数(遍历固定范围、数组)while:不确定循环次数,先判断再执行(读取数据、条件等待)do-while:必须至少执行一次(密码校验、菜单弹窗)
八、新手避坑
for 循环分号位置写错:
for(i=1;i<10;i++);{}分号截断循环,大括号代码只执行一次do-while 末尾遗漏分号,编译报错
循环内忘记更新计数器,造成死循环
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++ 一维、二维数组、字符数组与基础字符串操作实战