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 请按任意键继续. . .
追问其实我想知道的是递归函数,在最里层跳出来,是不是就只有goto 强制跳出的方法,因为,写这么多的判定标志来控制,既浪费时间,又浪费空间