c語言如何跳出多層迴圈
阿新 • • 發佈:2018-11-05
c語言如何跳出多層迴圈
我們知道c語言的break語句只能跳出離它最近的一層迴圈,可是有時候我們需要跳出多層迴圈 那可怎麼辦呢? 比如一個二重迴圈 在最內層如果某條件成立 我們就可以完成需要的動作 然後退出全部迴圈,該怎麼做呢? 下面雅樂網提供了幾種跳出多重循
我們知道c語言的break語句只能跳出離它最近的一層迴圈,可是有時候我們需要跳出多層迴圈 那可怎麼辦呢?
比如一個二重迴圈 在最內層如果某條件成立 我們就可以完成需要的動作 然後退出全部迴圈,該怎麼做呢?
下面雅樂網提供了幾種跳出多重迴圈的方法 並不侷限於上面的二重迴圈 例子只是為了提供思路
1. 使用goto
雖然大多數教材和人都建議少使用goto語句,但是goto還是有它存在的道理,比如可以快速跳出多重迴圈。雅樂網認為在這種情況下goto是最佳的選擇。
1 2 3 4 5 6 7 8 9 10 11 12 |
for
(
i
=
0
;
i
<
MAX1
;
i
++
)
{ |
評分:★★★★★
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