- 算法训练营:海量图解+竞赛刷题(入门篇)
- 陈小玉
- 937字
- 2021-07-23 18:16:28
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=1739400834-u1S1wt8tMHAn4k0UNIel9Bz4yKGrXCZB-0-cfd107f309f73950f8614de748ee1405)
训练1-10:输入一个整数n,输出1~n的所有整数。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/023-3.jpg?sign=1739400834-zlDHGT7yLdyyE33uksuokS1czau6Ofer-0-f8b3c46d320537edb3078c5739ffc387)
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=1739400834-L1lJGqNu8nAufniufCzjeE3KEu8XmAP6-0-a0800268443c73a38c7671d181303299)
训练1-11:输入一个整数n,输出1~n的所有整数,遇到5时停止。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/024-2.jpg?sign=1739400834-LEq3KKLqK12djsUvfGSRebaOHLzdEXKc-0-59e2d44d03e2031ef400bff7647c398e)
训练1-12:输入一个整数n,输出n行1~n的整数(输出1~n的整数时遇到5停止)。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/024-3.jpg?sign=1739400834-ysKYyoVHc1433wsh9uC8UgNHy6u1QXzR-0-d6daf5380e4b35b9191933cee9112374)
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/025-1.jpg?sign=1739400834-oiuwEaYF2iwFWGJfglHEtSTcf2O6ZigE-0-94e5bebc23ac70ca2779768e5101c0f8)
3)continue语句
continue语句指直接执行下一次循环,流程图如下图所示。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/025-2.jpg?sign=1739400834-EZeYq9Y2qhI4HlJzThoI6HqQXlq2mNQM-0-13c50cd4f98c71d5b242119801f64aae)
训练1-13:输入一个整数n,输出1~n的所有整数,遇到偶数时不输出。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/025-3.jpg?sign=1739400834-smADlyboCp0zkkFZziYR4MTzNsAaggwJ-0-681203fa52ec8d89460090f0442bf7f1)
训练1-14:输入一个整数n(0<n<10),输出n!。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/026-1.jpg?sign=1739400834-Ug76WldhOLHFu60hoMBYtOHo2l4YmYcN-0-2ae505e3b5a1d5da1e3dab9b2dfc7c8d)
训练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=1739400834-B0yTOLRgzYMRMwSwTBLDoWE8KNHZGlSe-0-e06c07d0ef340a3004b2f544335353aa)
2. while语句
while语句会反复地进行条件判断,只要条件成立,“{}”内的执行语句就会一直执行,直到条件不成立,while循环才会结束。其示例及流程图如下图所示。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/026-3.jpg?sign=1739400834-eA0JWsbK75hKtF6TU7p38Wp9kWVZN9zJ-0-afbfe7ba0a11fc3a81938210836e8efe)
训练1-16:输入一个整数n,输出1~n的所有整数。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/027-1.jpg?sign=1739400834-N0wzXOOgY8BIrquzw632yuiqlp9RbXAV-0-71c85cdae7d1a18e65cc9671e5ca7722)
3. do while语句
do while循环语句先执行一次大括号内的代码再判断循环条件。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/027-2.jpg?sign=1739400834-PzxjhL2r3MzlelCLI0QzaE03AosEfFzr-0-f9e0873270e02cb266473003d8f1f240)
训练1-17:输入一个整数n,输出1~n的所有整数。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/027-3.jpg?sign=1739400834-Vq1q5cpxmdn8j33bgUj3BddXvDIMqO9V-0-55458d75704fc4762bc3dda3b6f9a491)
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=1739400834-3lo3VizvyM4z8PCOWdPFbkwSoqCVLsVp-0-49e101197b4c953eb97903e71c3bd35f)
训练1-19:输入一个整数n,输出1~n的所有整数。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/028-2.jpg?sign=1739400834-lB0RrVTOBH2C41Xu74fVBvPPvFoRG4wy-0-893573e7205d49e5606b7dd1f7fb159a)
训练1-20:输入一个整数n,输出1~n的所有整数,跳过3的倍数。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/028-3.jpg?sign=1739400834-gQGadHV6LqLvFwz3ZX0HANd0YxPXsWTO-0-6265cc3c604e816d98b217c1d2d2b243)
训练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=1739400834-ppP7FbDpRiTtt7tcSC4DgeQHHNmwI2HV-0-16eae218a736d53ce607e979749bab67)