循环中的流程转移控制:
使用break,continue和goto语句可以改变流程顺序;
一:break
break表示退出循环转到循环后的下一条语句,一般不会单独使用break(单独使用没有有意义)
表达式为:
while( 表达式1)
{
......
if(表达式2)
break;
.......
}
二,continue:
表示本次循环提前结束,跳过本条循环语句后面部份,进入下一次循环的条件判断部分;
对比break和continue
#include <stdio.h>
int main()
{
int x = 0;
while(x++<10)
{
if(x==3)
break;
}
printf("%d",x);
}
#include <stdio.h>
int main()
{
int x = 0;
while(x++<10)
{
if(x==3)
continue;
}
printf("%d",x);
}
在第一段代码中,输出1 2;第二段中输出 1 2 4 5 6 7 8 9 10;因为continue只能退出本次循环;
实例:
输出100~150之间不能被3整除的数。
#include <stdio.h>
int main()
{
int n;
for(n=100;n<=150;n++)
{
if(n%3==0)
continue;
printf("%d\t",n);
}
}
表示n如果能被3整除则跳过输出语句;从而达到输出不能被3整除的数;
三,goto:
goto为转向语句,能转向指定位置,需配合标号使用;
格式:
goto label;
........
label:语句
例如:从键盘上输入正整数,累加求和,如果输入负数则结束;
#include <stdio.h>
int main()
{
int n,sum=0;
while(1)
{
printf("Please enter n:");
scanf("%d",&n);
if(n<0)
goto end;
sum +=n;
}
end: printf("sum is %d\n",sum);
}
注意:多次使用goto会使程序可读性降低;
goto和break对比:
break只能退出一层,而goto能转向到程序的任意位置;