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

c++信奥循环嵌套讲解

循环嵌套笔记

------彭彭老师

一、循环嵌套基础:什么是“套娃循环”?

就像“俄罗斯套娃”,一个循环里藏着另一个循环:

  • 外层循环:控制“大步骤”(比如做几轮)
  • 内层循环:控制“小步骤”(比如每轮重复做什么)

核心逻辑:外层循环每走1次,内层循环会完整走一遍(或按需走)。


二、课堂例题

例4.12 阶乘和

问题:求1! + 2! + ... + n!(比如n=3时,1+2+6=9)

知识点
  • 外层循环:控制加到第几个数(i从1到n
  • 内层循环:计算每个数的阶乘(i! = 1×2×...×i
  • 累加:把每个阶乘的结果加起来
通俗解释

想象你算“1个苹果 + 2个苹果×1(2!) + 3个苹果×2×1(3!)……”,每算一个数的阶乘(内层循环),就把它加到总和里(外层循环控制加几个数)。

简化代码(C++)
#include<iostream>usingnamespacestd;intmain(){intn=3;// 求到3!intsum=0;for(inti=1;i<=n;i++){// 外层:加第i个阶乘intfact=1;// 每个阶乘的初始值for(intj=1;j<=i;j++){// 内层:算i!fact*=j;}sum+=fact;// 累加阶乘}cout<<"1!+2!+...+"<<n<<"! = "<<sum<<endl;return0;}
答案

n=3时输出9;n=5时输出153(1+2+6+24+120)。


例4.13 打印三角形(*组成)

问题:打印n行正三角形(比如n=3时):

* ** ***
知识点
  • 外层循环:控制行数(i从1到n
  • 内层循环:控制每行的数量(j从1到i,打印i个
通俗理解

想象画三角形:第1行画1个*,第2行画2个*……第i行画i个*。外层选“第几行”,内层在这一行画“几个*”。

简化代码
#include<iostream>usingnamespacestd;intmain(){intn=3;for(inti=1;i<=n;i++){// 外层:第i行for(intj=1;j<=i;j++){// 内层:画i个*cout<<"*";}cout<<endl;// 换行}return0;}
答案

n=3时输出如上三角形;n=5时输出5行,每行依次1-5个*。


例4.14 百钱买百鸡

问题:100文买100只鸡,公鸡5文/只,母鸡3文/只,小鸡1文3只。求所有买法。

知识点
  • 外层循环:公鸡数量x(0≤x≤20,5×20=100)
  • 内层循环:母鸡数量y(0≤y≤33,3×33=99)
  • 小鸡数量z=100-x-y,需满足:5x+3y + z/3=100z能被3整除(小鸡不能买半只)
通俗理解

想象买鸡:先试买0只公鸡+0只母鸡,算小鸡数量;再试0只公鸡+1只母鸡……一个个试(双重循环),找到所有符合条件的组合。

简化代码
#include<iostream>usingnamespacestd;intmain(){for(intx=0;x<=20;x++){// 公鸡最多20只for(inty=0;y<=33;y++){// 母鸡最多33只intz=100-x-y;if(z%3==0&&5*x+3*y+z/3==100){cout<<"公鸡:"<<x<<",母鸡:"<<y<<",小鸡:"<<z<<endl;}}}return0;}
答案

共4种买法:

  • 公鸡0,母鸡25,小鸡75
  • 公鸡4,母鸡18,小鸡78
  • 公鸡8,母鸡11,小鸡81
  • 公鸡12,母鸡4,小鸡84

例4.15 水仙花数(三位数)

问题:找三位数中“每个数位的立方和等于自身”的数(比如153=1³+5³+3³)。

知识点
  • 外层循环:遍历100~999的三位数(i从100到999
  • 内层操作:分解i的百位、十位、个位(比如153→百位1,十位5,个位3)
  • 判断:百位³ + 十位³ + 个位³ == i
通俗理解

检查每个三位数,拆成“百、十、个”三个数字,算它们的立方和(比如1³=1,5³=125,3³=27,和为153),如果和原数一样,就是水仙花数。

简化代码
#include<iostream>usingnamespacestd;intmain(){for(inti=100;i<=999;i++){inta=i/100;// 百位(153/100=1)intb=(i/10)%10;// 十位(153/10=15→15%10=5)intc=i%10;// 个位(153%10=3)if(a*a*a+b*b*b+c*c*c==i){cout<<i<<" 是水仙花数"<<endl;}}return0;}
答案

三位数中的水仙花数:153、370、371、407


例4.16 100以内素数

问题:找100以内的素数(只能被1和自身整除的数,比如2、3、5)。

知识点
  • 外层循环:遍历2~100的数(i从2到100
  • 内层循环:判断i是否能被2~√i的数整除(若都不能,是素数)
通俗解释

检查每个数(从2开始),看看它能不能被比它小的数整除(比如5:2不能整除,3不能,4不能→是素数)。内层循环是“试除”,外层循环是“检查哪个数”。

简化代码
#include<iostream>#include<cmath>usingnamespacestd;intmain(){for(inti=2;i<=100;i++){boolisPrime=true;// 先假设是素数for(intj=2;j<=sqrt(i);j++){if(i%j==0){// 能整除,不是素数isPrime=false;break;// 跳出内层循环}}if(isPrime)cout<<i<<" ";}return0;}
答案

100以内素数:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97


例4.17 四位完全平方数

问题:找四位数中的完全平方数(比如1024=32²)。

知识点
  • 外层循环:遍历32~99的数(31²=961是三位数,99²=9801是四位数)
  • 计算平方:k=i×i,输出所有四位数的平方。
通俗解释

算每个数的平方,看看是不是四位数(比如32²=1024,是;99²=9801,是),把这些数找出来。

简化代码
#include<iostream>usingnamespacestd;intmain(){for(inti=32;i<=99;i++){cout<<i*i<<" ";}return0;}
答案

部分结果:1024(32²)、1089(33²)、1156(34²)……9801(99²)


例4.18 分解质因数

问题:把数分解成质数相乘(比如12=2×2×3)。

知识点
  • 外层循环:从2开始试除(最小质数是2)
  • 内层循环:若能整除,记录质数,继续用商试除(直到商为1)
通俗解释

把数“拆成小质数的乘积”:比如12→先除以2(能整除,记录2),得到6;再除以2(能整除,记录2),得到3;再除以2(不能),换3(能整除,记录3),结束。

简化代码(以12为例)
#include<iostream>usingnamespacestd;intmain(){intn=12;cout<<n<<" = ";for(inti=2;i<=n;i++){while(n%i==0){cout<<i;n/=i;if(n!=1)cout<<"×";}}cout<<endl;return0;}
答案

12=2×2×3;18=2×3×3;25=5×5。


三、循环嵌套技巧

  1. 先想外层循环控制什么(比如行数、范围),再想内层循环做什么(比如每行操作、试除)。
  2. 用“套娃”比喻理解嵌套,外层每走1步,内层走完整轮。
http://www.jsqmd.com/news/728631/

相关文章:

  • DECI(Decoupled-Composable Infrastructure,可拆解式数字基础设施)是专知智库数据场景实验室提出的新一代数据要素流通基础设施,旨在以“可拆解、可组合、可交易”的范式
  • 别再死记命令了!用华为eNSP模拟器搞懂防火墙安全域与策略的底层逻辑
  • 颠覆性视觉革命:Revelation光影包如何重新定义Minecraft的真实感边界
  • 精密夹爪高端工况配套怎么选供应商?2026年实力精密夹爪厂家盘点 - 品牌2026
  • Sync-LoRA:基于时序优化的人像视频编辑技术解析
  • 数字音频工作站 Fender Studio Pro
  • WWW 2026 利用知识图谱不但能够感知时间,还能“预判未来事件”?
  • 如何让旧款iPhone和iPad重获新生:终极iOS设备恢复与降级指南
  • 别再只盯着防火墙了!用AIDE给你的CentOS 7服务器做个“文件指纹”体检(附自定义监控策略)
  • 3个关键步骤,让旧iPhone/iPad重获新生:系统降级与设备焕新指南
  • 电磁夹爪工况适配讲解:挑选正规电磁夹爪厂家技巧 - 品牌2026
  • 政策赋能校产融合 推动高校科技成果落地生根
  • VLC for Android:你的终极移动端万能媒体播放器解决方案
  • 别再让robosuite报EGL错误了!手把手教你用Panda机器人跑通第一个Lift任务(附完整代码)
  • Shinkansen
  • 无人机飞控开发避坑指南:从欧拉角到四元数,如何避免姿态解算中的万向节死锁
  • 环世界MOD管理器终极指南:3分钟解决加载顺序混乱,RimSort让MOD管理变得简单高效
  • 3大核心方案:彻底解决DouyinLiveRecorder中PandaTV录制失败的终极指南
  • 为 OpenClaw 配置 Taotoken 作为其大模型供应商的指南
  • 基于stm32ARM库函数的IIR二阶巴特沃斯低通滤波器--附完整代码
  • 终极指南:3步免费解锁你的Intel/AMD电脑100%性能潜力
  • 让每一辆车快速拥抱AI!东软开启座舱AI Agent平权时代
  • 国企领导:“现在都是 Agent自动开发了,你还在对话模式,太落后了!”我一点不慌:“这就去补,假期后见分晓!”领导露出满意的笑容。
  • MSP430 MCU从Flash到FRAM的存储技术演进与应用
  • Python突破验证码抓取贝壳二手房源数据
  • [具身智能-509]:全局混乱下的局部有序:不要用战术的勤奋掩盖战略的懒惰
  • AMD Ryzen处理器深度调试指南:使用SMUDebugTool实现精准性能调优
  • springboot+vue3的婚礼场景规划系统设计与实现
  • 【flutter for open harmony】第三方库Flutter 鸿蒙版 NFC功能 实战指南(适配 1.0.0)✨
  • 【Azure Container App】使用 yaml 部署 Container App 时遇见 400 Bad Request 错误