...嵌套的多个循环或者多个递归,break和return只能跳出一层,怎样...
发布网友
发布时间:2024-06-01 14:00
我来回答
共3个回答
热心网友
时间:2024-07-22 20:25
1、goto不是和新手使用不代表老司机们用不好他
2、break只能跳出一层, 想要跳出多层要自己想办法,适当的加一些判断和状态变量,一层一层跳,在跳出一层判断下满足某个条件下再来个break
#include <stdio.h>
void arrSet(int c[][4]);
void arrPrint(int b[][4]);
int main(){
int a[5][4];
int i;
int j;
int m = 1;
int flagBrkTwoFor = 0;
arrSet(a);
printf("原数组:\n");
arrPrint(a);
printf("break 选择性的输出:\n");
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
{
printf("%d ",a[i][j]);
if(j==1)
{
if(i==2)
{
flagBrkTwoFor = -1;
}
break;
}
}
if(flagBrkTwoFor)
{
break;
}
}
return 0;
}
void arrSet(int c[][4])
{
int i;
int j;
int m = 1;
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
{
c[i][j] = m++;
}
}
}
void arrPrint(int b[][4])
{
int i;
int j;
printf("\n");
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
{
printf("%6d", b[i][j]);
}
printf("\n");
}
printf("\n");
}
原数组:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
17 18 19 20
break 选择性的输出:
1 2 5 6 9 10 请按任意键继续. . .
热心网友
时间:2024-07-22 20:22
可以声明一个bool变量,若要跳出则设置为true,然后在每个循环结尾加入一个if语句检查是否为true,若是则跳出
(其实goto也没怎么不好,goto跳出多层循环是很方便的,没有安不安全之说只要你保证程序没写错即可)
热心网友
时间:2024-07-22 20:18
goto强制跳转,用次数一多了就晕了呢。。。所以新手不推荐用。
return不是跳一层,直接就返回了。break和continue是一层,不过可以在break以前写一些额外的语句来跳出多层。比如
for(i=0;i<M;i++){ for(j=0;j<N;j++){if (xxx) {i=M;j=N;break;}}}