目录
有时,需要在循环体中提前跳出循环,或者在满足某种条件下,不执行循环中剩下的违句而立即从头开始新的一轮循环,这时就要用到 break 和 continue 语句。
在前面学习 switch 语句时,已经接触到 break语句,在case子句执行完后,通过brea语句使控制立即跳出 switch 结构。在循环语句中,break 语句的作用是在循环体中测试到应立即结束循环时,使控制立即跳出循环结构,转而执行循环语句后面的第一条语句
例如
#include<sidio.h>
int main( )
char c;
while(1)
{
c=getchar(); //读取一个字符
if(c>='a'&&c<='z') //是小写字母
putchar(c-'a'+ 'A'); //输出其大写字母
else //不是小写字母
break; //循环退出
return 0;
}
//运行结果(假设输人的字符序列为 howareyou):
howareyou回车
HOWAREYOU
注意
1)break语句只能用于while语句,do-while语句或for语句构成的循环中和switch选择结构中
2)在嵌套循环条件下,berak语句只能终止并跳出包含它的最近的循环体。
3)如果在循环体中想让berak语句直接跳出所有的循环体,那么可以设置一个标志变量tag,然后在每层循环后面加一个语句:if(tag)break;其值为真跳出循环体为假不会跳出。
continue 语句与 break 语句不同,当在循环依本中遇到 continue 语句时,程序将跳过 continue 语句后面尚未执行的语句,开始下一次循环,即只结束本次循环的执行,并不终止整个循环的执行。
#include<stdio.h>
int main()
{
{
int i,a,num=0;
float sum=0;
for(i=0;i<10;i++)
scanf("%d",&a); //输人一整数
if(a <=0) continue; //如果为负,则输入下一个整数
num++; //正数个数增
sum+=a; //正数和累加
}
printf("%d plus integer's sum: %.0f\n", num, sum);
printf( "average value: %.2f\n",sum/num); return 0;
return 0;
}
注意:
1)continue语句只能用于while语句、do-while语句、或for语句构成的循环结构中。
2)在嵌套循环的情况下,contiune语句只对于包含它的最内层的循环体语句起作用。
goto语句也称为无条件转移语句
其中,语句标号是按标识符规定书写的符号,放在某一语句行的前面,标号后加冒号。句标号起标识语句的作用,与 goto 语句配合使用。C语言不限制程序中使用标号的
但各标号不得重名。 goto 语句的作用是在不需要任何条件的情况下直接使程序跳转到该语句标号
的语句去执行。
下面给出 goto 语句在程序中的应用。
(1) goto 语句可与条件语句配合使用来实现条件转移,构成循环。例如,下面的程序
用来求 1~100 的累计和。
# include <stdio.h>
int main( )
{
int i=1,sum=0;
loop:sum+=i++;
if(i<=100) //如果r小于或等于 100
goto loop;//转到标号为loop的语句去执行
printf("sum=%d\n",sum);
return 0;
}
(2)在嵌套循环的情况下,利用 goto 语句可以 stop:for循环后的第一条语句一
直接从最内层的循环体跳出最外层的循环体