多重迴圈中的continue的用法

時間 2022-03-15 18:10:22

1樓:文件類共創空間

public class cont

}system.out.println("test");}}

}當是continue back1的時候,當i==0時候第二層for迴圈到j==9的時候就結束此次迴圈,執行continue back1,到第一層迴圈。此時因為有i++所以i==1的時候,第二層for迴圈到j==9的時候就結束當前迴圈,執行continue back1。這樣下去最後當i>9的時候迴圈就結束了,所以沒有輸出。

當continue back2時候,一樣當i==0時候第二層迴圈到j==9的時候,就結束此次迴圈,執行continue back2,到第二層迴圈。此時j==10了,所以就直接執行輸出語句。當i==1的時候也是一樣的道理。

兩層迴圈時候,先執行完內迴圈再執行外迴圈。

2樓:志遠

是do-while的,它只針對最近的一層迴圈。如果你想一次跳出所有迴圈,請使用goto

void main()while(!i);

n++;

}loop_end:

printf(「n=%d」,n);}

3樓:匿名使用者

continue 作用於包含他的最小的迴圈,這裡當然就是作用於do-while迴圈了。

4樓:烏光

最裡面的那個,也就是do-while迴圈。break也一樣。

巢狀迴圈中continue的用法?

5樓:聽不清啊

continue只對「最內層」的「本次迴圈」生效,短路本次迴圈中迴圈體的後餘部分。

對下一輪的迴圈、或是外層的迴圈,都不會起作用的。

6樓:白菜一顆

這種寫法不會使外部迴圈中止,系統自動匹配最近的迴圈

c語言中break和continue在各種迴圈中的用法,謝謝...

7樓:匿名使用者

c語言中continue與break的用法介紹

1. continue

continue 可用於 c 提供的全部三種迴圈結構。continue 會致使迴圈跳過迴圈體中餘下的語句,轉而判斷迴圈條件是否仍然成立,然後選擇是否再次進入迴圈體。如果 continue 位於迴圈巢狀中的一個內迴圈,則其僅能影響該內迴圈的執**況,而不會對外迴圈造成任何影響。

例如:| 功能: 統計從 1 到 n 中一共有多少個數字可以被 5 整除

#include

int main(void)

for ( j = 1, total = 0; j <= i; ++j )

++total; /* 統計從 1 到 i 一共有多少個數字可以被 5 整除 */

}printf("total: %d ", total);

} while ( i ) ; /* i 等於 0 時退出迴圈 */

}我們先來分析一下內迴圈。假設使用者輸入的是 5,則內迴圈的前四次迴圈中,j % 5 都為真,然後執行 continue; 跳過迴圈體中餘下的語句,直接執行 ++j,繼而判斷 j <= i 的真假性,從而選擇是否再次進入迴圈體。本內迴圈中,因為 continue 的關係,前四次迴圈 ++total; 都會被跳過。

第五次迴圈 j % 5 為假,不會執行 continue; ,++total; 終於得以被執行。

外迴圈中,假設使用者輸入 0,則 i == 0 為真,continue; 得以被執行,因此跳到 while ( i ),因為 i 為假,故外迴圈結束。如下圖所示:

請注意,本例中的內迴圈完全是出於演示目的才用 continue 的,這使**複雜化了,有違 continue 的初衷。continue 是為了簡化**而生的!本例中的內迴圈如果不使用 continue,**將會更簡單:

for ( j = 1, total = 0; j <= i; ++j ) }

記住,continue 是為了簡化**而生的!使用前請斟酌使用它是否能簡化**,如果不能,則不要用。

其實本例中的外迴圈也可以不用 continue。以下**沒有使用 continue,但其功能和上面使用 continue 的那段**完全一樣。

doelse }

printf("total: %d ", total);

}} while ( i ) ; /* i 等於 0 時退出迴圈 */

不過,本例中的外迴圈使用 continue 使得**的結構更加清晰明瞭,緊湊易讀,而且也沒有使**複雜化。本例中的外迴圈使用 continue 告訴我們,當 i 等於 0 時跳到 while ( i )。如果不用 continue 而採用上面這段**的話,當 i 等於 0 時,我們只能知道 else 下的那條複合語句不會被執行,卻不能確定執行完 printf("zero is not allow.

"); 後一定會跳到 while ( i ),因為我們不知道迴圈體中整個 if else 結構後面是否還有其它語句。

2. break

break 可用於 c 提供的全部三種迴圈結構,其作用是跳出迴圈。如果 break 位於迴圈巢狀中的一個內迴圈,則僅跳出該內迴圈。上例中,如果 i 等於 0 的話,肯定會退出外迴圈,所以其實上例中的外迴圈使用 break 更加合適。

下面我們來看一個例子:

/* 本段**僅用作演示目的,不要寫這樣的**!*/

int i, j, total;

while ( 1 )

for ( j = 0, total = 0; j != i; ++j )

/* 其它語句 */

}/* 其它語句 */

}/* 其它語句 */

當 i 等於 100 時,外迴圈中的 break; 會被執行,從而跳出 while 迴圈,轉而繼續執行 while 迴圈後的語句。如果 i 等於 50,則能進入 for 迴圈。for 迴圈中,當 (total += j) > 100 為真時,break; 會被執行,跳出 for 迴圈,轉而繼續執行 for 迴圈後的語句。

如下圖所示:

和 continue 一樣,break 也是為了簡化**而生的!上面這段**完全是為了演示 break 而瞎編的,導致**複雜化了,請試著將其簡化。

8樓:匿名使用者

break:提前結束迴圈,即從迴圈體內跳出迴圈體.當它用於 do while , for ,while 時 可終止迴圈而執行後面的語句.

通常break總與if 語句一起使用,應用廣泛而巧妙!

continue:跳過本次迴圈體中剩餘的語句重新判斷迴圈條件!

功能 是結束本次迴圈 ,轉向迴圈條件,重新執行下一次迴圈!!

好好領會吧!

9樓:匿名使用者

break是退出迴圈

continue是停止下面的語句 重新迴圈for和while沒什麼不同的

for大多用在已知迴圈次數

while用在未知迴圈次數的問題

do while和while的不同是 do while是先執行一次迴圈再判斷真假 也就是最少要迴圈一次

10樓:匿名使用者

都一樣,

break是跳出迴圈

continue是不執行迴圈內continue語句以下的**,直接跳到下一次迴圈

11樓:匿名使用者

continue停止此次迴圈也就是這次迴圈continue下面的語句不用在執行,break終止迴圈.

說明在迴圈中使用break和continue,return語句之間的區別

12樓:千鋒教育

break: 此語句導致程式終止包含它的迴圈,並進行程式的下一階段(整個迴圈後面的語句),即,不是跳到下一個迴圈週期而是退出迴圈。如果break語句包含在巢狀迴圈裡,它只跳出最裡面的迴圈。

如下**

public class test

system.out.print(i+" ");}}

}可以看到程式輸出了01234到5的時候跳出了迴圈

continue:迴圈語句裡有此語句時,程式執行到此語句時,不在執行迴圈體裡continue後面的語句而是跳到下一個迴圈入口處執行下一個迴圈。

把break改為continue

public class test

system.out.print(i+" ");}}

}可以看到只有5沒有輸出,也即當i=5時沒有執行列印操作,直接到下一次迴圈

而return是表示從被調函式返回到主調函式繼續執行,返回時可附帶一個返回值,由return後面的引數指定。return後函式就結束了,後面的語句不再執行

public class test

system.out.print(i+" ");

}system.out.println("hello");

}public static void main(string args)

}可以看到後面的hello並沒有列印出來

13樓:泉彩榮己夏

break和continue都是中斷當前的迴圈(注意,迴圈是可以巢狀的,中斷的只是當前層的迴圈)

break語句中斷迴圈後跳轉到迴圈後的語句標籤執行(before),而continue則跳轉到迴圈入口語句標籤執行(after)before:

while()

after:............

以上就是一個迴圈的簡易模型。

return

語句就牛了,它可以出現在**中的任意位置,不只是迴圈(但是一般沒有人將return語句置於迴圈體內,據說是對效率有影響,但是在我理解上看不出來有什麼影響)

return

作用是,將函式呼叫棧彈棧,恢復現場。說的簡單點兒就是結束當前的函式(順便返回函式執行結果),回到本函式被呼叫處繼續執行。

14樓:我是一個麻瓜啊

如下**

12345678910

public class test             system.out.print(i+" ");        }    }}

可以看到程式輸出了01234到5的時候跳出了迴圈

continue:迴圈語句裡有此語句時,程式執行到此語句時,不在執行迴圈體裡continue後面的語句而是跳到下一個迴圈入口處執行下一個迴圈。

把break改為continue

12345678910

public class test             system.out.print(i+" ");        }    }}

可以看到只有5沒有輸出,也即當i=5時沒有執行列印操作,直接到下一次迴圈

而return是表示從被調函式返回到主調函式繼續執行,返回時可附帶一個返回值,由return後面的引數指定。return後函式就結束了,後面的語句不再執行

1234567891011121314

public class test             system.out.print(i+" ");        }        system.

out.println("hello");    }    public static void main(string args) }

請問for迴圈中的switch語句中case後用break還是continue??區別是什麼

鐮刀鐵錘遊騎兵 break是結束並跳出迴圈語句,continue是結束本次迴圈然後進入下次迴圈 迴圈的定義是程式段執行完了以後,再次判斷條件,若條件為真,則繼續執行該程式段。而在switch結構當中,只是該程式段執行完了之後,就繼續執行下面的語句。因此很明顯switch結構不是迴圈。迴圈有重複 反覆...

for迴圈中的i 何 i沒區別嗎

for迴圈中的i 和 i是有區別的,區別如下 i 是先引用i的值再自加,而 i是先讓i自加再引用i的值。本迴圈中i 的輸出值為0 1 2 3 4 5 6 7 8 9,而 i的輸出值為1 2 3 4 5 6 7 8 9,但兩種演算法執行完畢之後,i的值都為10.一般實際應用中,先加在引用顯得更高效。f...

cfor迴圈中定義的變數會影響效率嗎

這裡面其實有一點是比較需要注意的,就是你在for迴圈裡面反覆定義的int型變數tmp實際上始終佔用的是同一塊記憶體。從這個角度來看,對於內建型別應該影響可以忽略,對於自定義型別需要反覆建立和析構應該是有一定影響的 對於優化編譯的程式而言,上述兩個 片段不會有任何效率上的差異。不優化的話,第一個效率會...