1. 程式人生 > >c語言如何跳出多層迴圈

c語言如何跳出多層迴圈

c語言如何跳出多層迴圈

我們知道c語言的break語句只能跳出離它最近的一層迴圈,可是有時候我們需要跳出多層迴圈 那可怎麼辦呢? 比如一個二重迴圈  在最內層如果某條件成立 我們就可以完成需要的動作  然後退出全部迴圈,該怎麼做呢? 下面雅樂網提供了幾種跳出多重循

我們知道c語言的break語句只能跳出離它最近的一層迴圈,可是有時候我們需要跳出多層迴圈 那可怎麼辦呢?

比如一個二重迴圈  在最內層如果某條件成立 我們就可以完成需要的動作  然後退出全部迴圈,該怎麼做呢?

c語言如何跳出多層迴圈

下面雅樂網提供了幾種跳出多重迴圈的方法 並不侷限於上面的二重迴圈 例子只是為了提供思路

1. 使用goto

雖然大多數教材和人都建議少使用goto語句,但是goto還是有它存在的道理,比如可以快速跳出多重迴圈。雅樂網認為在這種情況下goto是最佳的選擇。

1 2 3 4 5 6 7 8 9 10 11 12 for ( i = 0 ; i < MAX1 ; i ++ ) {
for ( j = 0 ; j < MAX2 ; j ++ ) { if ( condition1 ) { symbol = 1 ; goto here ; } } } here :

評分:★★★★★

2. 寫成函式 return

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 void nestedfor ( void ) { for ( condition1 ) { for ( condition2 ) { for ( condition3 ) { if ( condition ) { symbol = 1 ; return ; } } } } }

評分:★★★★

缺點:迴圈巢狀很多的時候很麻煩,函式引數傳遞也很麻煩

3. 直接修改外層迴圈條件

1 2 3 4 5 6 7 8 9 10 11 12 for ( i = 0 ; i < MAX1 ; i ++ ) { for ( j = 0 ; j < MAX2 ; j ++ ) { if ( condition1 ) { symbol = 1 ; i = MAX ; break ; } } }

評分:★★★★

缺點:修改了迴圈控制變數

4. 在外層迴圈設定判斷條件

內層迴圈判斷滿足條件修改標誌後 外層迴圈進行判斷

1 2 3 4 5 6 7 8 9 10 11 12 13 for ( symbol != 1 && condition1 ) { for ( symbol != 1 && condition2 ) { for ( symbol != 1 && condition3 ) { if ( condition ) { symbol = 1 ; } } } }

評分:★★★

缺點:書寫較為麻煩  未滿足條件的時候有多餘的判斷

5. 在大迴圈後面判斷標誌加入break

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 for ( condition1 ) { for ( condition2 ) { for ( condition3 ) { if ( condition ) { symbol = 1 ; } } if ( symbol == 1 ) break ; } if ( symbol == 1 ) break ; }

評分:★★★

缺點:同2