![算法训练营:海量图解+竞赛刷题(入门篇)](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=1739127302-7ykrvFd4fBIsdRQDHlseeDnsWOKdgDQp-0-656c3714190b51ed110949f8ded32bee)
训练1-10:输入一个整数n,输出1~n的所有整数。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/023-3.jpg?sign=1739127302-iQndg6jd67VMBP8pPr5pyyuQYI84odTQ-0-ce2f1130674fcfbe82206b5648a8f78d)
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=1739127302-YbXJgbfjsQ740ld5mHqQgIxDcry1ec0Q-0-6b2e5570d1c9357448879f412a2a736d)
训练1-11:输入一个整数n,输出1~n的所有整数,遇到5时停止。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/024-2.jpg?sign=1739127302-3JU9DIc4sMkeo0suVYLJzM1Eb4kWfQ3s-0-98f5affa10d6044c98ffef4a1fba922d)
训练1-12:输入一个整数n,输出n行1~n的整数(输出1~n的整数时遇到5停止)。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/024-3.jpg?sign=1739127302-d41dwmOep6XwQZCnvgcvd9Jmjt6Jw8Xq-0-854b88133bd1ca1794b437c48cbd1bb3)
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/025-1.jpg?sign=1739127302-5d8eha6IfhCbgpaf3j8xpLD0XRELIuOJ-0-c8bf53b7ce7f09cb1dc24e99bba6241d)
3)continue语句
continue语句指直接执行下一次循环,流程图如下图所示。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/025-2.jpg?sign=1739127302-lqOYYjyYlQwM7trbI1Xo4cDNQgQd1RMl-0-62a6f2589076bae35f0ce5690ee1bf7b)
训练1-13:输入一个整数n,输出1~n的所有整数,遇到偶数时不输出。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/025-3.jpg?sign=1739127302-wf1ckPA7GqCniL63u96moP7RseilrTEr-0-c6497ad131a46eb57c2045c87928384a)
训练1-14:输入一个整数n(0<n<10),输出n!。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/026-1.jpg?sign=1739127302-6sL0xm9adT4yfUOw01uLzvCzcT9FYO9h-0-8107a1092c5206fc6c5416839b708fda)
训练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=1739127302-7sLHj6HnCjdTY9tA8GIE9pfADX8eQic1-0-68db396eb011ad6906acb22fca50cb49)
2. while语句
while语句会反复地进行条件判断,只要条件成立,“{}”内的执行语句就会一直执行,直到条件不成立,while循环才会结束。其示例及流程图如下图所示。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/026-3.jpg?sign=1739127302-kYpumhggTykAIJfjIZpAbYmk0XTxMXgt-0-787c5325ba4a4d17900bf5f9a8015db6)
训练1-16:输入一个整数n,输出1~n的所有整数。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/027-1.jpg?sign=1739127302-BIsKJ17zTrAdP2ZLFOB6hPOaplqZtHxO-0-74afd643aaf7574e143855b74cd60666)
3. do while语句
do while循环语句先执行一次大括号内的代码再判断循环条件。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/027-2.jpg?sign=1739127302-0y3r1ZuR3tCByIWAnF3DzgHVs1UPlLQ0-0-87f5150fd5d1f2ecd7691cf2530e6f8b)
训练1-17:输入一个整数n,输出1~n的所有整数。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/027-3.jpg?sign=1739127302-iJ0VcHBhTFmXQE0yauDcddF1pYIddNx8-0-b31476faa8b1eb2f8ec19432a18e5611)
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=1739127302-b3xPnaBqCtSxK4hy3tShapPfMIsvtHop-0-9d6ec7be3bd551403d1bede4a0690a7a)
训练1-19:输入一个整数n,输出1~n的所有整数。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/028-2.jpg?sign=1739127302-R09Uov2ojVUZRacDgybmK5oCvQUGcJrL-0-985f0e90f79c630ddf4fa1be1ac546a7)
训练1-20:输入一个整数n,输出1~n的所有整数,跳过3的倍数。
![](https://epubservercos.yuewen.com/41CA5A/20637464308667306/epubprivate/OEBPS/Images/028-3.jpg?sign=1739127302-krZMC0WFpCWdZjobTl7cTebE0qH0EKyb-0-11bd67448ade2bf3387afc8e438a2100)
训练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=1739127302-5oLZZrPAuDSczjGxVBNd3E3WVtWtEpd0-0-facaa22b33f2824a259d5d68f8967227)