目录
如果遇见多个for循环,如何才能在满足条件的时候直接退出多个循环?
#include<stdio.h>
int main(){
int m=1;
int i,j,k;
for( i=0;i<10;i++){
for( j=0;j<20;j++){
for( k=0;k<30;k++){
if(i==2&&j==5&&k==0){
printf("已经找到了这个数\n")
break;
}
}
}
}
printf("%d,%d,%d",i,j,k);
}
这里的break只能推出一层循环,显然是不对的。
方法一:设置标记位,使用多个break
#include<stdio.h>
int main(){
int m=0;
int i,j,k;
for( i=0;i<10;i++){
for( j=0;j<20;j++){
for( k=0;k<30;k++){
if(i==2&&j==5&&k==10){
printf("已经找到了这个数\n");
m=1;
break;
}
}//of for1
if(m==1){
break;
}//推出循环2
}of for2
if(m==1){
break;
}
}//of for3
printf("%d,%d,%d",i,j,k);
}
方法二:使用goto
在C语言中,
goto
是一个跳转语句,允许程序在特定条件下无条件地跳转到程序中的标签位置。尽管goto
语句可以使代码的流程更加复杂,但在某些情况下使用它仍然是有用的。但是,由于滥用goto
可能导致代码难以理解和维护,应该谨慎使用它。
goto基本用法:
goto xxx;//xxx是自己取的名字
xxx:
语句;
#include<stdio.h>
int main(){
int i,j,k;
for( i=0;i<10;i++){
for( j=0;j<20;j++){
for( k=0;k<30;k++){
if(i==2&&j==5&&k==10){
printf("已经找到了这个数\n");
goto out;//去往标识符
}
}
}
}
out://(标识符)
printf("%d,%d,%d",i,j,k);
}