1. 程式人生 > >巢狀迴圈與迴圈控制

巢狀迴圈與迴圈控制

巢狀迴圈

巢狀迴圈就是在一個迴圈中還有一個迴圈, 內部迴圈在外部迴圈體中. 在外部迴圈的每次執行過程中都會觸發內部迴圈, 直到內部迴圈執行結束. 外部迴圈執行了多少次, 內部迴圈就完成多少次. 當然, 無論是內部迴圈還是外部迴圈的break 語句都會打斷處理過程.

例: 巢狀迴圈.

#!/bin/bash
# 巢狀的for迴圈.

outer=1                     # 設定外部迴圈計數.

# 開始外部迴圈
for a in 1 2 3 4 5
do
    echo "Pass $outer in outer loop."
    echo "--------------------------"
inner=1 # 重置內部迴圈計數. # 開始內部迴圈. for b in 1 2 3 4 5 do echo "Pass $inner in inner loop." let "inner+=1" # 增加內部迴圈計數. done # 內部迴圈結束. let "outer+=1" # 增加外部迴圈的計數. echo done #外部迴圈結束. exit 0

迴圈控制

影響迴圈行為的命令 : break, continue.

break和continue這兩個迴圈控制命令與其他語言的類似命令的行為是相同的. break命令用來跳出迴圈, 而continue命令只會跳過本次迴圈, 忽略本次迴圈剩餘的程式碼, 進入迴圈的下一次迭代 .

例: break和continue命令在迴圈中的效果.

#!/bin/bash

limit=19    # 上限

echo "Printing Numbers 1 through 20 (but not 3 and 11)"
a=0

while [ $a -lt "limit" ]
do
    a=$(($a+1))
    if [ "$a" -eq 3 ] || [ "$a
"
-eq 11 ] then continue fi echo -n "$a " done # 1 2 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 echo a=0 while [ "$a" -lt "$limit" ] do a=$(($a+1)) if [ "$a" -gt 2 ] then break fi echo -n "$a " done # 1 2 echo exit 0

break命令可以帶一個引數. 一個不帶引數的break命令只能退出最內層的迴圈, 而break N可以退出 N 層迴圈.

例: 多層迴圈的退出.

#/bin/bash
# break N 推出多層迴圈

for a in 1 2 3 4 5                              # break 不帶引數執行結果
do                                              #+Group 1: 1 2 3 
    echo -n "Group $a:  "                       #+Group 2: 1 2 3 
#-------------------------                      #+Group 3: 1 2 3 
    for b in 1 2 3 4 5                          #+Group 4: 1 2 3 
    do                                          #+Group 5: 1 2 3 
        echo -n "$b "
        if [ "$b" -eq 3 ]
        then
            break
        fi
    done
#-------------------------
    echo
done

echo; echo

for a in 1 2 3 4 5                             # break 2 執行結果
do                                             #+Group 1: 1 2 3 
    echo -n "Group $a:  "
#-------------------------
    for b in 1 2 3 4 5
    do
        echo -n "$b "
        if [ "$b" -eq 3 ]
        then
            break 2
        fi
    done
#-------------------------
    echo
done

echo

exit 0

continue命令也可以象break命令一樣帶一個引數. 一個不帶引數的continue命令只會去掉本次迴圈的剩餘程式碼. 而continue N將會把 N 層迴圈的剩餘程式碼都去掉, 但是迴圈的次數不變.

相關推薦

迴圈迴圈控制

巢狀迴圈 巢狀迴圈就是在一個迴圈中還有一個迴圈, 內部迴圈在外部迴圈體中. 在外部迴圈的每次執行過程中都會觸發內部迴圈, 直到內部迴圈執行結束. 外部迴圈執行了多少次, 內部迴圈就完成多少次. 當然, 無論是內部迴圈還是外部迴圈的break 語句都會打斷處

sql語句中2層迴圈

declare @year intdeclare @month intset @year=2008while(@year<=2011)beginset @month=1while(@month<=12)begininsert into tableName values(@year,@month)s

continue 在 switch中使用 (switch在while迴圈中)

如果你在switch中使用continue,continue生效是對於while迴圈 如果你在switch中使用break,break生效是對於switch。 #include <stdio.h> int main() {     int i_index;

Python迴圈條件控制語句

Python中的條件控制語句及迴圈控制語句 Python中的條件控制元件語句主要有以下3種if、elif、else其中elif的用法與C++中的else if的使用方法相同。 示例: num = 2

表示式樹練習實踐:C# 迴圈迴圈控制

目錄 表示式樹練習實踐:C# 迴圈 LabelTarget for / while 迴圈 無限迴圈 最簡單的迴圈 多次迴圈 break 和 continue 一

vue路由404重定向實現方法分析

第一部分: vue巢狀路由 巢狀路由是什麼? 巢狀路由就是在一個被路由過來的頁面下可以繼續使用路由,巢狀也就是路由中的路由的意思。 比如在vue中,我們如果不使用巢狀路由,那麼只有一個<router-view>,但是如果使用,那麼在一個元件中就還有<router-view>,這也就構

ajax獲取JSON,樹形控制元件顯示

Ztree的api連結: http://www.treejs.cn/v3/demo.php#_113 上面有許許多多的例子,但是都是自己手寫的資料。在現實生活中,很多時候資料都是通過後臺獲取的,當獲取的是資料是單層的json,鍵名和例子一樣的時候可以直接使用,而且比較簡單。但是,很多時候是巢

C++ nested class 外圍類 訪問問題

/* 巢狀類 nested class 巢狀類的引入是為了更好的名稱空間使用。 巢狀類是名字在其外圍類的作用域中可見,但在其他類作用域或定義外圍類的作用域中不可見。 巢狀類的名字將不會與另一作用域中宣告的名字衝突。 但巢狀類是獨立的類,基本上與他們的外圍類不相關,因此外

C++內部類

————————————————–先從定義上來區分————————————————– 巢狀類       所謂巢狀類就是可以在一個類中定義另一個類。這個被巢狀的類的作用域就只在它的上一級類中。       外圍類需要使用巢狀類物件作為底層實現,並且該巢狀類

樹形多級選單資料來源結構扁平結構互轉

1.前言 在日常開發中,往往會有這樣的需求:根據後端返回的資料,動態渲染出一顆多級導航選單樹,類似於計算機中資源管理器的樣子。如下圖所示: 要實現這樣的需求,其實不難,只是對後端返回的資料來源有要求,如果後端返回的資料能夠很清楚的表現出節點與節點之間的層級關係,那麼前端實現起來就易如反掌。 2.資料來

Angular-ui-router進階二之檢視多個檢視組合使用

ui-router巢狀檢視 巢狀檢視是ui-router不同於ng-route的最大區別之一,也是ui-router受到大眾青睞的主要原因。接下來跟小編直接上手做一下簡單的巢狀檢視(Nested Views)。 上面是本次示例的佈局,有導航欄、側邊欄、檢視1及其子孫檢

Spring Web Flow 入門demo(三)流程業務結合 附原始碼

上篇部落格我們說Spring web Flow與業務結合的方式主要有三種,下面我們主要介紹一下第三種的應用方式3,執行到<action-state> 元素SpringWeb Flow 中的這

C++ 外圍類以及區域性類對成員變數的訪問 【資料結構】

參考資料:《資料結構c++語言描述》 概念: 在一個類中定義的為巢狀類,定義巢狀類的類稱為外圍類。巢狀類只能在外圍類中使用。 定義巢狀類的目的就是為了隱藏資訊,這樣可以提高類的抽象能力。 例子如下: 其中,類B是一個巢狀類,類A是外圍類,類B定義在類A的類體內。 若干說

[SQL Server]事務分散式事務

 Sql Server支援巢狀事務:也就是說在前一事務未完成之前可啟動一個新的事務,只有在外層的Commit Tran語句才會導致資料庫的永久更改。請嘗試執行以下語句:BEGIN  TRAN  tr0       BEGIN TRAN tr1        ROLLBACK

Scrollview listView recycleView 滑動衝突的解決

本來我們用recycview代替了listview之後就很少會遇到scrollview了但是產品需求總是在不斷的更新。在時間與技術的探索之下,還是會有一部分兄弟會選擇這樣的佈局,下面我就來說說使用之後遇到的一些坑的解決方案。 1 scrollview 簽到listview

java基礎(二)迴圈控制跳轉

迴圈巢狀 package com.st.basis.day04; /* * 迴圈巢狀 * 外層控制行數 * 內層控制列數 * */ public class LoopNesting { public static void main(String[] args) { //

向標準輸出上列印一些用ASCII字元組成的圖形(彙總)(迴圈)(關鍵是找要輸出物行數n之間的關係,找規律)

1 #include <stdio.h> int main() { int i,j,n; scanf("%d",&n);//有n行 for(i=1;i<=n;i++) {for(j=1;j<=2*

for迴圈if判斷的使用

for(i=0; i<N; i++)     {         if(condition)             DoSomething();         else             DoOtherthing();    } 優點:程式簡潔 缺點:多執行

無限迴圈迴圈

1.無限迴圈 最簡單無限迴圈格式: while(true){} 或 for(;;){} 無限迴圈存在的原因是並不知道迴圈多少次,而是根據某些條件,來控制迴圈。 2.巢狀迴圈 巢狀迴圈是指在一個迴圈語句的迴圈體中再定義一個迴圈語句的語法結構。while、do…while、for迴圈語句都可以進行巢

Python之可變迴圈

巢狀迴圈      前面寫過一次乘法表程式,要列印3個乘法表,只需把原來的迴圈包含在一個外迴圈中。對應的程式碼清單如下:      執行結果:巢狀可變迴圈      固定的數(比如range()函式中使用的數)也稱為常數(constant)。如果在一個for迴圈的range(