break 和continue都是用来控制循环的流程。
break结束循环,不执行循环中剩余的语句
continue 结束当前的迭代,跳转到循环的顶部,及循环开始的位置,继续执行迭代
1、break
C语言中的break可以用在两个地方:
(1)用在switch中,作用是使程序流程转到switch语句之后的语句去执行。
(2)用在循环中,作用是转到循环语句之后的语句执行。
要注意的是,如果switch语句或循环语句是嵌套的,那break都只能跳出它所在的switch或循环,而不是跳出所有switch或所有循环。
例如:
for(i = 1; i <= 10; i++)
for(j = 1; j <= 10; j++)
if(i == j)
break;
代码中的break在内循环中,它使程序跳出内循环,外循环将继续进行。
2、continue
continue只能用在循环中,作用是跳过本次循环剩下的部分,转去执行下一次循环。对于for循环,只要遇到continue,便转到for后面括号里的第三个表达式。
注意:
continue不能用在单纯的switch语句中,除非switch在循环中或循环在switch中,这种情况下continue是对循环起作用而不是对switch。如果没有循环,单纯的switch中出现continue是一个语法错误。
使用案例:
#include<stdio.h>
int main (void)
{
int i,j,n,x,a[10];
printf("输入数据的个数n:");
scanf("%d",&n);
printf("输入%d个整数:",n);
for(i=0;i<n;i++);
scanf("%d",&a[i]);
printf("输入要插入的整数:");
scanf("%d",&x);
for(i=0;i<n;i++);
{
if(x>a[i]) continue;
j=n-1;
while(j>=i)
{
a[j]=a[j+1];
j++;
}
a[i]=x;
break;
}
if(i==n)a[n]=x;
for(i=0;i<n+1;i++)
printf("%d",a[i]);
putchar('\n');
return 0;
}
错误案例:
#include <iostream>
using namespace std;
int main(){
char i;
cout<<"Menu:A(dd) D(elete) S(ort) Q(uit) Select One:"<<endl;
cin>>i;
if (i=='A')
{
cout<<"增"<<endl;
continue;
}
else if (i=='D')
{
cout<<"删"<<endl;
continue;
}
else if (i=='S')
{
cout<<"排序"<<endl;
continue;
}
else if (i=='Q')
{
cout<<"退出"<<endl;
continue;
}
else
{
cout<<"无此操作符"<<endl;
break;
}
return 0;
}
最后来一个,大家可以看看哪里出问题了!
#include<stdio.h>
int main(void)
{
char ch ;
while((ch=getchar()) ! = '#')
{
if(ch=='\n')
continue;
printf("Step 1 \n");
if(ch=='c')
continue;
else if (ch=='b')
break;
else if (ch == 'g')
goto laststep;
printf("Step 2 \n");
laststep:printf("Step 3 \n");
}
printf("Done \n");
return 0;
}