不知道大家有没有注意到,在上一节讲述赛车问题的时候有这样一句话:如果没有发生意外的话,那么跑完了指定数量的圈数,比赛就结束了。实际上,赛车比赛是会发生各种情况的,比如要进维修站进行维修,或者引擎突然损坏不得不退出比赛。那么C++的“赛车比赛”会不会进维修站或者退出比赛了呢?
上一节向大家介绍了for可以省略循环继续的条件而使其不断循环,但如果我们放任这种无止尽的循环,则可能会导致电脑死机。所以我们必须强制停止比赛。这条语句就是break语句,其实我们在4.4的switch语句中已经遇到过了。下面我们还是在程序5.1.1的基础上作修改,看看break在for语句中是如何使用的。
#include "iostream.h"
int main()
{
int sum=0;
for (int i=1;;i++)
{
if (i>100) //若i大于100则退出循环
{
break;
}
sum=sum+i;
}
cout <<sum <<endl;
return 0;
}
这段代码的意思是,当i<=100的时候一直执行循环;一旦i>100了,则会运行到if语句里的break语句,于是强行中止了循环。以上这段代码可以由图5.2.1来表示。我们也不难发现,修改后的程序运行结果应该和程序5.1.1的运行结果一样。
那么,进维修站又是怎么一回事呢?
实际上进维修站并不是退出比赛,而是暂时绕开一段,然后重新进入赛道继续下一圈的比赛。那么绕开的赛道上的标牌是无法看到的。在C++的“赛车比赛”中,进维修站是绕开一些语句,重新开始下一次的循环。进维修站的语句是continue,下面我们来看一个程序:(程序5.2.1)
#include "iostream.h"
int main()
{ for (int i=0;i<12;i++)
{
cout <<'*';//输出星号
if (i%2==0)
{
continue;
}
cout <<' ';//输出空格
}
cout <<endl;
return 0;
}
运行结果: ** ** ** ** ** **
在循环的执行过程中,如果i%2不等于0,即i为奇数的时候,则完成整个循环,输出一个星号和一个空格;如果i是个偶数,则跳过输出空格的语句,进行下一次循环。这个程序的运行情况可以由图5.2.2来描述。