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實際上始終佔用的是同一塊記憶體。從這個角度來看,對於內建型別應該影響可以忽略,對於自定義型別需要反覆建立和析構應該是有一定影響的 對於優化編譯的程式而言,上述兩個 片段不會有任何效率上的差異。不優化的話,第一個效率會...