当前位置: 首页 > news >正文

2.2 C++之循环结构

学习目标

  • 理解循环的意义(避免重复写代码)。
  • 掌握 forwhiledo-while 循环的用法。
  • 能编写简单循环程序(如累加、猜数字、输出图形等)。


1 循环的基本概念

什么是循环?
  • 比喻
    • 循环就像“重复做家务”——擦桌子5次、跳绳100下。
    • 程序中的循环:让计算机自动重复执行某段代码。
循环的三大要素
  1. 初始化:设定循环的起点(例如 int i = 1)。
  2. 循环条件:决定是否继续执行(例如 i <= 10)。
  3. 更新操作:改变循环变量的值(例如 i++)。

2 for 循环

基本语法
for (初始化; 循环条件; 更新操作) {// 重复执行的代码
}
示例1:输出1到10的数字
for (int i = 1; i <= 10; i++) {cout << i << " ";
}

运行结果

1 2 3 4 5 6 7 8 9 10
示例2:计算1到100的累加和
int sum = 0;
for (int i = 1; i <= 100; i++) {sum += i;  // 等价于 sum = sum + i
}
cout << "1到100的和是:" << sum;

运行结果

5050
嵌套循环:输出乘法表
for (int i = 1; i <= 9; i++) {      // 外层循环控制行for (int j = 1; j <= i; j++) {  // 内层循环控制列cout << j << "x" << i << "=" << i*j << "\t";}cout << endl;  // 换行
}

运行结果

1x1=1	
1x2=2	2x2=4	
1x3=3	2x3=6	3x3=9	
...(省略后续行)

3 while 循环

基本语法
初始化;
while (循环条件) {// 重复执行的代码更新操作;
}
示例1:猜数字游戏
srand(time(0));  
int num = rand() % 100 + 1;  // 生成1-100的随机数
int guess, count = 0;while (true) {  // 无限循环,直到猜对cout << "请输入你猜的数字:";cin >> guess;count++;if (guess > num) {cout << "太大了!" << endl;} else if (guess < num) {cout << "太小了!" << endl;} else {cout << "恭喜!你用了" << count << "次猜对了!";break;  // 跳出循环}
}
示例2:计算水仙花数
int n = 100;
while (n <= 999) {  // 遍历所有三位数int a = n / 100;       // 百位int b = (n / 10) % 10; // 十位int c = n % 10;        // 个位if (a*a*a + b*b*b + c*c*c == n) {cout << n << " ";}n++;
}

运行结果

153 370 371 407

4 do-while 循环

基本语法
初始化;
do {// 重复执行的代码更新操作;
} while (循环条件);
特点
  • 至少执行一次循环体(先执行,再判断条件)。
示例:输入密码验证
string password = "123456";
string input;
do {cout << "请输入密码:";cin >> input;
} while (input != password);  // 密码错误时重复输入cout << "密码正确!欢迎登录!";

5 break 和 continue

作用
  • break:立即跳出当前循环。
  • continue:跳过本次循环剩余代码,进入下一次循环。
示例:找质数(优化版)
for (int i = 2; i <= 100; i++) {bool isPrime = true;for (int j = 2; j <= i/2; j++) {  // 优化:只需检查到i/2if (i % j == 0) {isPrime = false;break;  // 发现因子后立即跳出内层循环}}if (isPrime) cout << i << " ";
}

6 常见错误 & 调试技巧

易错点
  1. 无限循环:忘记更新循环变量。
int i = 1;
while (i <= 10) {  // 缺少i++,导致无限循环cout << i << " ";
}
  1. 循环条件错误
for (int i=0; i<5; i--);  // i--会让i越来越小,永远小于5
  1. **混淆 break 和 **continue
for (int i=1; i<=10; i++) {if (i == 5) continue;  // 跳过i=5的循环cout << i << " ";
}
调试技巧
  • 在循环内打印变量值:cout << "i=" << i << endl;
  • 使用调试工具逐步执行(如Visual Studio的逐行调试)。

7 练习与挑战

基础练习

  1. for 循环输出所有 偶数(1-100)。
  2. while 循环计算 10的阶乘(10! = 10×9×8×…×1)。

进阶挑战

  1. “数字炸弹”游戏:计算机随机生成一个1-100的数,玩家每次猜测后,程序缩小范围提示(例如:答案是50,玩家猜30,提示“30-100”)。
  2. “星号金字塔”:用嵌套循环输出如下图形:
   *  ***  *****  
*******  

总结

知识点关键内容
for 循环适合已知次数的循环(如遍历数组、固定次数操作)。
while 循环适合未知次数但需先判断条件的循环(如游戏循环)。
do-while至少执行一次循环体(如密码验证)。
break/continue控制循环流程,避免冗余计算。

下一部分数组与字符串 —— 用“盒子”存储多个数据!


通过 生活化比喻游戏化案例,少儿可以轻松理解循环的抽象概念。是否需要添加更多互动练习或调整难度?

http://www.xdnf.cn/news/697321.html

相关文章:

  • 弧度 = 弧长与半径的比值
  • Vitrual Studio调试windows应用程序如何打开控制台
  • 算法-背包问题
  • 火热邀测!DataWorks数据集成支持大模型AI处理
  • 让DeepSeek去除AI痕迹的指令
  • 数据库管理:探寻高效之路
  • webpack打包基本配置
  • 图像融合质量评价指标
  • cmake学习day01
  • [CARLA系列--03]如何打包生成CARLA 0.9.15的非编辑版(地图的加载与卸载)
  • NW845NW850美光闪存颗粒NW883NW889
  • 把数据库做得能扩展:Aurora DSQL 的故事
  • AxumStatusCode细化Rust Web标准格式响应
  • 配置vscode中java.configuration.runtimes
  • Java设计模式之命令模式详解
  • XJTU-SY轴承振动数据集的json自封装
  • 深度学习论文: FastVLM: Efficient Vision Encoding for Vision Language Models
  • Test-Time Zero-Shot Temporal Action Localization
  • 操作系统导论 第38章:廉价冗余磁盘阵列(RAID)
  • 【C/C++】delete nullptr;
  • android系统framework的几个新面试题目(涉及binder,input,SurfaceFlinger带答案)
  • Tomcat运行比较卡顿进行参数调优
  • 案例解读 | 某外资在华汽车系统企业综合运维平台建设实践
  • Java消息队列应用:Kafka、RabbitMQ选择与优化
  • java读取excel数据中字段是否为金额格式
  • vue或者前端适配makedown推荐开源依赖
  • dart常用语法详解/数组list/map数据/class类详解
  • golang 柯里化(Currying)
  • 720全景展示:VR全景的技术原理及应用
  • Python进阶【一】 :线程、进程与协程