巢狀For敘述

就像巢狀IF敘述一般,if敘述裡面可以再放if敘述,也有所謂的巢狀迴圈敘述,For Next裡面再放For Next。

一般迴圈敘述

For 計次變數=初始值 To 終止值
  迴圈程式
Next 計次變數

巢狀迴圈敘述

語法:For 計次變數1 =初始值 to 終止值
    For 計次變數2 =初始值 to 終止值
      迴圈程式
    Next 計次變數2
   Next 計次變數1

1.觀察i,j兩計次變數變動情形

以下程式只是很單純的顯示迴圈程式內的i,j記錄資料改變的情形

Private Sub Command1_Click()
Dim i As Integer
Dim j As Integer

For i = 1 To 14  '一到十四班
 For j = 1 To 10   '各班1到十號
  print i & "班" & j   & "號同學上台領獎"
 Next j
Next i
End Sub

 

2.題目練習:

1.請問以下程式會印出幾個"◎"?或是有其他結果?

第一小題
For i=5 To 10
 For j=1 To 3
  Print "◎"
 Next i
Next j

第二小題
For i=5 To 10
 For j=1 To 3
  Print "◎"
 Next j
Next i

第三小題
For A=1 To 2
 For B=1 To 3
  For C=1 To 4
   Print "◎"
  Next C
 Next B
Next A

第四小題
For A=1 To 2
 For B=1 To A
  Print "◎"
 Next B
Next A
第五小題
For A=1 To 2
 For B=1 To A
  For C=1 To B
   Print "◎"
  Next C
 Next B
Next A

2.觀察i,j兩計次變數變動情形

以下程式只是很單純的顯示迴圈程式內的i,j記錄資料改變的情形

Private Sub Command1_Click()
 Dim i As Integer
 Dim j As Integer

 For i = 1 To 3
  For j = 1 To 3

   print "i=" & i & " j= " & j
  Next j
 Next i
End Sub

Private Sub Command1_Click()
 Dim i As Integer
 Dim j As Integer

 For i = 1 To 3
  For j = 1 To 3

   Print "i=" & i & " j=" & j
  Next j
  Print "i=" & i & "跑完了"
 Next i
End Sub

1.Next i與Next j的位置可以顛倒嗎?或是可以只有Next i或是Next j嗎?

2.Next j與Next i之間也可以放其他的敘述的。

3.請問總共會印出幾行文字?

4.執行巢狀迴圈後,這時候的i,j是多少呢?

3.巢狀For敘述簡單應用

Private Sub Command1_Click()
 Dim n As Integer
 Dim i As Integer
 Dim j As Integer
 'n為三角形邊長,i,j為計次變數

 n = Val(InputBox("請輸入三角形的邊長"))

 For i = 1 To n
  For j = 1 To i

   Print "◎";
  Next j
   Print
 Next i

End Sub

說明:

1.若不考慮換行因素,請問會印出幾個◎?

2.print 資料 ;。代表資料印出來後,不換行。

3.Print後面不接任何資料,代表只做換行。