1. 程式人生 > >C語言跳出多重迴圈方法

C語言跳出多重迴圈方法

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

比如有一個二維陣列 判斷如果有元素值為1 就直接將識別符號設定為1 然後退出全部迴圈

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

1. 使用goto

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

123456789101112for(i=0;i<MAX1;i++){for(j=0;j<MAX2;j++){if(condition1
){symbol=1;gotohere;}}}here:

評分:★★★★★

2. 寫成函式 return

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

評分:★★★★

缺點:迴圈巢狀很多的時候很麻煩

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

123456789101112for(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; }

相關推薦

C語言跳出多重迴圈方法

我們知道c語言的break語句只能跳出離它最近的一層迴圈,可是有時候我們需要跳出多層迴圈 那可怎麼辦呢? 比如有一個二維陣列 判斷如果有元素值為1 就直接將識別符號設定為1 然後退出全部迴圈 下面雅樂網提供了幾種跳出多重迴圈的方法 並不侷限於上面的二重迴圈 例子只是

JAVA跳出多重迴圈的三種方法

 JAVA中,多重迴圈(多個FOR),如果只在其中一個迴圈中break那麼,只能跳出當前迴圈。這裡有3個辦法可以解決。  一、使用類似C語言中的GOTO。 STOP:         for(int

Python跳出多重迴圈方法

方法1:自定義異常 # -*- coding:utf-8 -*- """ 功能:python跳出迴圈 """ # 方法1:自定義異常 class Getoutofloop(Exception)

c語言產生隨機數的方法

c語言產生隨機數 定義函數 rand 正態分布 time pri 行程 程序 現在 用c語言產生隨機數的方法 一、 //************************************ 偽隨機數 在C語言中,rand()函數可以用來產生隨機數,但是這不是真正意義上的

24.C語言最全排序方法小結(不斷更新)

http 希爾 找到 sin -s arr span 計算機 gpo 希爾排序: 該方法的基本思想是:先將整個待排元素序列切割成若幹個子序列(由相隔某個“增量”的元素組成的)分別進行直接插入排序,然後依次縮減增量再進行排序,待整個序列中的元素基本有序(增量足夠小)時,再對全

C語言】利用迴圈輸出菱形

輸出菱形的思想主要是用了等差數列 an = a1 + (n - 1) * d  來求每個迴圈的約束條件; 一個完整的菱形必須是由空格 、星形 來組成,切分為兩部分。   題目效果如下: //要求輸出如下圖形 *   ***  *

C語言do while迴圈詳解

do…while 迴圈不經常使用,其主要用於人機互動。它的格式是: do { 語句; } while (表示式); 注意,while 後面的分號千萬不能省略。 do…while 和 while 的執行過程非常相似,唯一的區別是:“do…while 是先執行一次迴圈體,然後再判別表示式

C語言_雙向迴圈連結串列的基本操作

目錄: 1、初始化 2、頭部插入 3、頭部刪除 4、尾部插入 5、尾部刪除 6、列印連結串列 7、任意位置插入 8、查詢值為data的節點 9、指定位置刪除 10、銷燬連結串列 ###1、初始化: 建立一個節點,給節點賦值為0;因為是迴圈連結串列,所以讓它的_pNext

C語言實驗——for迴圈列印圖形(迴圈結構)

題目描述 通過使用雙重for迴圈語句,列印下列圖形: #include<stdio.h> int main() { int n,i,t; for(i=1;i<=4;i++) { for(t=1;t<=4-i;t++) printf(" “); for(t=1;t&l

c語言用for迴圈輸入字串

#include<stdio.h> #include<string.h> int main(){     char a[3][10]={"abc"};     char b[10];    &

c語言char* 轉char[]方法

vector<char *> splite_by_delim(char* host_name){ char a[1000]; strcpy(a,host_name); char *p = strtok(a , split); vector<char

c語言】用迴圈結構輸出下列數字金字塔

  #include<stdio.h> void main(){ int i,j,k; for(i=1;i<=10;i++){ for(j=10;j>i;j--) printf(" "); for(k=1;k<=(2*i-1)/2

C語言中輸出string方法c_str()用法

原文地址 https://blog.csdn.net/crazyspopcorn_qian/article/details/41926953 今天突然用printf("%s",str);//str  是一個string 的時候突然出現亂碼,就查了一下為什麼。任何時候只有自

C語言中用不同的方法交換兩個數的值

  在開始學習C語言的過程中,我們一定都做過這樣一道題,交換兩個數的值。可能大部分人都會這道題,但今天我想試試用不同的方法做這道題。   1、建立臨時變數 #include<stdio.h> int main() { int a = 10

java 如何跳出多重迴圈

跳出多重迴圈有兩種方法 (一)可以在外面的迴圈語句前定義一個標號,然後在裡層迴圈體的程式碼中使用帶有標號的break 語句,即可跳出外層迴圈 例: out:for(int i=0;i<10;i++) { for(int j=0;j<10;j++)

C語言程式設計:現代方法(第2版)(K.N.King 著)》學習筆記一:C語言概述

1.1 C語言的歷史 1.1.1 起源 C語言是美國貝爾實驗室的 Dennis Ritchie、Ken Thompson 等人為開發 UNIX 作業系統而於 1972 年設計的一種計算機程式語言。

C語言程式設計:現代方法(第2版)(K.N.King 著)》學習筆記三:C語言基本概念(2)

2.3 註釋 每一個程式都應該包含識別資訊,即程式名、編寫日期、作者、程式的用途以及其他相關資訊。C語言把這類資訊放在註釋(comment)中。 符號 /* 標記註釋的開始,而符號 */ 則標記註釋

C語言程式設計:現代方法(第2版)(K.N.King 著)》學習筆記四:C語言基本概念(3)

2.5 讀入輸入 為了獲取輸入,就要用到 scanf 函式。它是C函式庫中與 printf 相對應的函式。scanf 中的字母 f 和 printf 中的字母 f 含義相同,都是表示“格式化”的意思

C語言程式設計:現代方法(第2版)(K.N.King 著)》學習筆記五:C語言基本概念(4)

2.7 識別符號 在編寫程式時,需要對變數、函式、巨集和其他實體進行命名。這些名字稱為識別符號(identifier)。在C語言中,識別符號可以含有字母、數字和下劃線,但是必須以字母或者下劃線開頭。

C語言程式設計:現代方法(第2版)(K.N.King 著)》學習筆記六:C語言基本概念(5)

問與答 GCC 最初是 GNU C Compiler 的簡稱。現在指 GNU Compiler Collection,這是因為最新版本的 GCC 能夠編譯用 Ada、C、C++、Fortran、Ja