![算法训练营:海量图解+竞赛刷题(入门篇)](https://wfqqreader-1252317822.image.myqcloud.com/cover/621/39479621/b_39479621.jpg)
1.5 每天都有很多次重复:for/while
我们在实际生活中经常会将同一件事情重复做很多次。在C++中也经常需要重复执行同一代码块,这时就需要使用循环结构。循环结构包括for、while和do while语句。
1. for语句
for语句示例及其流程图如下图所示。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/023-2.jpg?sign=1739150623-jdJdHxfCMll7OT7sgLFVosr0n4PnNpKx-0-f6f4599ca62f3ec8a3a03b30f3811251)
训练1-10:输入一个整数n,输出1~n的所有整数。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/023-3.jpg?sign=1739150623-MPF7QNnQoWK0fHpIP1Qxb7KTcZgmnQDy-0-d98645d5a99957ce080a230b96c1655b)
1)调试程序
(1)工具→编译选项→代码生成/优化→连接器,在“产生调试信息”中将“no”改为“yes”。
(2)设置断点。
(3)单击菜单→运行→调试,按F5或者单击工具栏上的“√”可以开始调试。“”用于停止调试。
(4)设置需要监控的对象。
(5)单步运行。
2)break语句
break语句指直接跳出所在的循环,流程图如下图所示。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/024-1.jpg?sign=1739150623-YKaF9w2oBdnJRRDNMdRsqD3Yi8MpG6yu-0-dd8c3207a3140874b0d1245e832cf272)
训练1-11:输入一个整数n,输出1~n的所有整数,遇到5时停止。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/024-2.jpg?sign=1739150623-6wqtipQWgg0C9ajNSjgX1YRJTBcmORkk-0-337e66d55b1690a4bb12c61a3c5e845c)
训练1-12:输入一个整数n,输出n行1~n的整数(输出1~n的整数时遇到5停止)。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/024-3.jpg?sign=1739150623-Yso3HREzZKZVWAZmi3FZKBa72wy7YPEI-0-47b5db0d43bbc22ef10d47a758058efa)
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/025-1.jpg?sign=1739150623-lAmlx1UBOasodPVQE9HfdMS1wdVbkXxG-0-daa025c556217394479b9ded120c273d)
3)continue语句
continue语句指直接执行下一次循环,流程图如下图所示。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/025-2.jpg?sign=1739150623-nKlpxDmH9iCGKs8lpXlcFOphspehOFPx-0-0de0318504e15f1116df08d3a3f084c1)
训练1-13:输入一个整数n,输出1~n的所有整数,遇到偶数时不输出。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/025-3.jpg?sign=1739150623-ulsfzmsS712AbXXXcVfArAYW5LoNK9NM-0-8cb1ac441825f8459e2b9aeb0fcd580a)
训练1-14:输入一个整数n(0<n<10),输出n!。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/026-1.jpg?sign=1739150623-vGCFqy9GLEK8UoKQsjYt7jryHvH2k8BQ-0-bf1b906f60c41107a29c7cfeb099425f)
训练1-15:输出斐波那契数列第100项(F(1)=F(2)=1;F(n)=F(n-1)+F(n-2))。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/026-2.jpg?sign=1739150623-HkWy0xzKLDIkQ3ycOixD0ibWT37laLqE-0-bf7a09aa143b9f8468cd9beb11c105e1)
2. while语句
while语句会反复地进行条件判断,只要条件成立,“{}”内的执行语句就会一直执行,直到条件不成立,while循环才会结束。其示例及流程图如下图所示。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/026-3.jpg?sign=1739150623-VlPxqop3UrZqV1evUOTxfQc0G8Lo395V-0-c63956517aac32583f46927158770c45)
训练1-16:输入一个整数n,输出1~n的所有整数。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/027-1.jpg?sign=1739150623-OKHY6klWqKdNGhLJOgxSnspR0hOaaA91-0-a5c4ac78c9b368feb21cba04bc902cb1)
3. do while语句
do while循环语句先执行一次大括号内的代码再判断循环条件。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/027-2.jpg?sign=1739150623-yyvmTKUqlHLArGta0xZ8nYoVjTRGUJEJ-0-2d522e1832efc07029058943577b9299)
训练1-17:输入一个整数n,输出1~n的所有整数。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/027-3.jpg?sign=1739150623-anDL6jMXyRYXS395xWUni58qlirTGqSA-0-89246f5ebae86d5735043aa42d580c2c)
for、while、do while语句三者的区别如下。
• while语句先判断循环条件,再决定是否执行循环体。
• do while语句先执行循环体,再判断循环条件,至少执行一次循环体。
• for语句在省略测试条件时,会认为条件为true。
• for语句可以用初始化语句声明一个局部变量,while语句则不可以。
• 如果在循环体中包含continue语句,则for语句会跳到循环更新处,while语句会跳到循环条件处。
• 在无法预知循环次数或者循环更新不规律时,用while语句。
训练1-18:输入一个整数n,输出1~n的所有整数。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/028-1.jpg?sign=1739150623-866kWphg5eQ3j0MnSc39JpkES6aR3vzh-0-1f049f2339c76c7b48ef37e89cb3b0c6)
训练1-19:输入一个整数n,输出1~n的所有整数。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/028-2.jpg?sign=1739150623-Dr1av8zT8Iw7L88P9k6QXYGmdVi9hWfa-0-739f539817d332c3c5b807930866be64)
训练1-20:输入一个整数n,输出1~n的所有整数,跳过3的倍数。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/028-3.jpg?sign=1739150623-9ng93VkHNu8JuVWH0RErBBPRIwJTH73y-0-64639c6051a8cf1913e1655908a3572c)
训练1-21:输入一个大于1的整数n(n<100),若n为奇数,则n变为3n+1;否则n变为n/2。经过若干变换,n会变为1并停止,输出变换次数。
在无法预知循环次数或者循环更新不规律时,用while语句。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/029-2.jpg?sign=1739150623-77z1OQTAo6KP578FtfZAPpTPAkKu0Xsm-0-335b23c800f5cc4ec986e8833b8622bd)