
1.5 每天都有很多次重复:for/while
我们在实际生活中经常会将同一件事情重复做很多次。在C++中也经常需要重复执行同一代码块,这时就需要使用循环结构。循环结构包括for、while和do while语句。
1. for语句
for语句示例及其流程图如下图所示。

训练1-10:输入一个整数n,输出1~n的所有整数。

1)调试程序
(1)工具→编译选项→代码生成/优化→连接器,在“产生调试信息”中将“no”改为“yes”。
(2)设置断点。
(3)单击菜单→运行→调试,按F5或者单击工具栏上的“√”可以开始调试。“”用于停止调试。
(4)设置需要监控的对象。
(5)单步运行。
2)break语句
break语句指直接跳出所在的循环,流程图如下图所示。

训练1-11:输入一个整数n,输出1~n的所有整数,遇到5时停止。

训练1-12:输入一个整数n,输出n行1~n的整数(输出1~n的整数时遇到5停止)。


3)continue语句
continue语句指直接执行下一次循环,流程图如下图所示。

训练1-13:输入一个整数n,输出1~n的所有整数,遇到偶数时不输出。

训练1-14:输入一个整数n(0<n<10),输出n!。

训练1-15:输出斐波那契数列第100项(F(1)=F(2)=1;F(n)=F(n-1)+F(n-2))。

2. while语句
while语句会反复地进行条件判断,只要条件成立,“{}”内的执行语句就会一直执行,直到条件不成立,while循环才会结束。其示例及流程图如下图所示。

训练1-16:输入一个整数n,输出1~n的所有整数。

3. do while语句
do while循环语句先执行一次大括号内的代码再判断循环条件。

训练1-17:输入一个整数n,输出1~n的所有整数。

for、while、do while语句三者的区别如下。
• while语句先判断循环条件,再决定是否执行循环体。
• do while语句先执行循环体,再判断循环条件,至少执行一次循环体。
• for语句在省略测试条件时,会认为条件为true。
• for语句可以用初始化语句声明一个局部变量,while语句则不可以。
• 如果在循环体中包含continue语句,则for语句会跳到循环更新处,while语句会跳到循环条件处。
• 在无法预知循环次数或者循环更新不规律时,用while语句。
训练1-18:输入一个整数n,输出1~n的所有整数。

训练1-19:输入一个整数n,输出1~n的所有整数。

训练1-20:输入一个整数n,输出1~n的所有整数,跳过3的倍数。

训练1-21:输入一个大于1的整数n(n<100),若n为奇数,则n变为3n+1;否则n变为n/2。经过若干变换,n会变为1并停止,输出变换次数。
在无法预知循环次数或者循环更新不规律时,用while语句。
