VC++提供break语句、continue语句、goto语句和return语句等若干转向语句,用于改变程序原来的执行顺序。
break语句
位置:只能用在switch语句和循环语句中。
作用:跳出switch语句或提前终止循环,转去执行switch语句或循环语句之后的语句。
应用:多用于提前结束循环(包括省略形式的for循环),以避免死循环。
例如:
for (i=10; i<20; i++){
if (i % 3==0) break;
cout<<i<<′/t′;
} //循环语句1
【分析】:当if语句的条件表达式为真,即i能被3整除时,便由break退出循环,不再输出。
【结果】:程序段执行后输出: 10 11
又如:
for(; ;){
…
if(<表达式>) break;
… } //循环语句2
【分析】:当if语句的条件表达式为真时,由break退出,结束了本来的死循环。
举例:【例2.18】 给定正整数m,判定其是否为素数。(查看动画演示)
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int m,i,k;
cout<<"输入大于1的正整数m:"<<endl;
cin>>m;
if(m==2) cout<<m<<"是素数"<<endl;
else{
k=sqrt(m);
for(i=2;i<=k;i++) if (m%i==0) break; //只要有一个整除,就可停止
if(i>k) cout<< m<<"是素数"<<endl; //循环提前终止表示是非素数
else cout<< m<<"不是素数"<<endl;
}
return 0;
}
注意:在嵌套循环中,break语句终止的是其所在的循环语句,而并非终止所有的循环。例如:
for (; {
for (; {
…
… break; //当程序执行到break语句时,终止内层循环,接着执行语句1。
…
}
语句1;
…
}
continue语句
位置:只能用在循环语句中。
作用:终止本次循环,即跳过其后尚未执行的循环体语句,并开始下一次循环。
区别:与break语句的区别是:continue语句结束本次循环,而break语句是结束整个循环。
举例:将循环语句1中的break换成continue,代码和结果如下:
for (i=10; i<20; i++) {
if (i % 3==0) continue;
cout<<i<<′/t′;
}
【分析】:当if语句的条件表达式为真,即i能被3整除时,便由continue结束当前循环,不输出,开始下一次循环。
【结果】:程序段执行后输出: 10 11 13 14 16 17 19
注意:continue语句执行后的下一次循环是否执行,仍然取决于循环条件的判断。
goto语句
作用:goto语句和标号语句一起使用,控制程序从goto语句所在的地方转移到标号语句处。所谓“标号语句”,是用标识符标识的语句。
应用:在某些特定场合下,比如在多层循环嵌套中,要从深层循环跳出,若用break语句,不仅要使用多次,而且可读性较差,这时goto语句可以发挥作用。
注意:大多数情况下,goto语句容易导致程序结构混乱,可读性降低。而且,它所完成的功能完全可以用算法的三种基本结构实现,因此,一般不提倡使用goto语句。
return语句
return语句用在函数中,详细内容见第3章 函数。