1樓:翰林院裡掃地的
step-1 表示每一步減1,也就是迴圈第一次是i=4,然後是i=3,i=2
這是稱為「冒泡法」的排序方法,可以這樣理解:
外迴圈表示需進行幾輪比較,對4個元素進行比較排序,需要進行3輪比較,所以for i = 4 to 2 step -1。
而內迴圈則可以這樣說:
第一次是i=4,a(1)與a(2)、a(2)與a(3)、a(3)與a(4)進行比較,如果發現排列順序不對,則交換位置,這樣出了內迴圈之後,最大的元素會「沉」到最後一位成為新的a(4)。
而第二次則是i=3,在前三個元素中找到最大的(由於在上一個迴圈比較中a(4)已經是最大的了,所以就不需再拿a(4)出來比較,可將閣下的**中內迴圈改為for j = 1 to i-1),把它沉到第三位成為新的a(3)。同理,第三次是在前兩位進行排序。這樣當迴圈結束後,最小的元素就如水泡往上冒一樣,一步步冒到最上面來了。
樓上的yutuo5兄的內迴圈定義錯了,應該是for j = 1 to i-1 的。
(由於本人疏忽,發表答覆後進行了多次修改,深感抱歉。)
2樓:匿名使用者
只用一層迴圈不能完成排序。比如陣列為:
4321
一次排序後:3214
二次後:2134
三次後:1234
3樓:匿名使用者
首先,只用一層是不可以的,當你的資料很特殊的時候還有可能兩個迴圈是一種變化後的冒泡演算法
改成下面**應該更好
for i = 4 to 2 step -1for j = 1 to i
if a(j) > a(j + 1) thent = a(j + 1)
a(j + 1) = a(j)
a(j) = t
end if
next j
next i
4樓:
for i = 4 to 2 step -1
就是從4到2,每次迴圈遞減1的運算
vb中for迴圈step的問題
5樓:匿名使用者
如果沒有其他條件使迴圈變數的值發生變化,當第一次迴圈條件滿足時,step為0將造成死迴圈,當第一次迴圈條件不滿足時,step為0不迴圈
6樓:岔路程式緣
先看這幾句執行時的作用:
(1)s = 0,給s設初值0
(2)for i = 1 to 5,第一次執行這一句時,對i設初值1,以後每次執行這一句時都判斷i的值是否介於初值和終值之間,也就是在1和5之間,如果在這個範圍之內,就執行下一句,如果超出這個範圍,就去執行next i後面的那一句了。——樓主所提的問題,這一句話是第一個重點,請仔細理解。
(3)s = s + i,把s和i相加,再把和賦值給s
(4)next i,執行這一句時,把i的值加上步長,在本例中,就是加1,再把值給i,相當於執行了i=i+1,再返回for i=1 to 5那一句去執行。——樓主所提的問題,這一句話是第二個重點,請仔細理解。
(5)print s, i,這一句是列印s和i的值,當程式執行到這一句時,i的值一定是6了,因為等於5時還跳不出這迴圈體呢!
問題補充:private sub command1_click()
for i = 1 to 3 step 2
print "vb"
next i
end sub
為什麼「vb」的執行次數為2次 step為2 不是直接1跳到3嗎
補充答覆:
樓主說的對啊,確實是直接從1跳到3,但是3仍然符合進入迴圈的條件,所是要print 兩次"vb"啊!!
-------------------------------------
private sub command1_click()
dim x as integer
dim n as integer
x = 1
n = 0
do while x < 20
n = n + 1
x = x * 3
loop
text1.text = str(x)
text2.text = str(n)
end sub
為什麼n=3 是怎麼計算出來的??
再補充答覆:
看執行do.....loop之間的語句幾次就可以了
第一次,n=n+1=0+1=1,x=x*3=1*3=3
第二次,n=n+1=1+1=2,x=x*3=3*3=9
第三次,n=n+1=2+1=3,x=x*3=9*3=27
第四次,進入時,判斷 x < 20已經不成立(已經=27了!),所以不能進入,迴圈結束,最終結果是n=3,x=27
7樓:淡智板環
for迴圈
是定長迴圈
.在迴圈開始後
把step
值加到迴圈計數器
(i)裡。並不會動態改變step。
step
的值可以是正數,負數,或0
.為0時,就會無限迴圈.
如果你要動態改變step
你就要用do
或while
迴圈實現。
8樓:我們的夢
使用下面的語句測試,說明它應該是無限迴圈的。
private sub command1_click()for i = 2 to 4 step 0 『這句換為for i = 2 to 2 step 0也行)
j = j + 1
debug.print j
if j > 10 then exit subnext i
end sub
vb的for迴圈該怎麼寫?
9樓:潮潮
1、首先,我們輸入for關鍵字。
2、然後我們定義一個迴圈變數。
3、然後我們寫入【1 to 10】。
4、然後我峨眉呢輸入【next i】結束。
5、然後我們就可以在這裡輸入每次執行的語句。
6、最後執行就可以看到這個結果了。
10樓:匿名使用者
for i = 1 to k
if (i mod 2 = 0 and i mod 3 = 0 and i mod 5 <> 0) then
debug.print i
end if
next i
vb for迴圈的步長step問題
11樓:
dim i,l as integer '宣告i為變體變數,l為整型變數
for i = 0 to 20 step l '迴圈從0到20,注意你這裡是個字母「o」,應該是數字「0」,步長為l,之前l沒有賦值,所以l為0
l = 0 '給l賦值
l.... '結果l不為0
next i
for迴圈不寫步長時步長預設為1
12樓:匿名使用者
for 迴圈 是定長迴圈 .
在迴圈開始後 把step 值加到 迴圈計數器 (i) 裡。並不會動態改變step。
step 的值 可以是正數,負數,或0 .為0時,就會無限迴圈.
如果你要動態改變step 你就要用do 或 while 迴圈實現。
「vb,do until」迴圈語句問題?
13樓:匿名使用者
數值0等同於布林值常量的false,而do until則是當表示式為真時跳出迴圈,這與do while剛好相反,所以:
do until 0
相當於do until false
相當於do while not(false)相當於do while true
所以,如果不在迴圈體中跳出迴圈或跳出所在過程或end或goto的話,這將是一個死迴圈.
自然,迴圈體將至少被執行一次.
vb中的for迴圈問題?
14樓:聽不清啊
這個問題中的x1片,還有一個數字,這是表示什麼意思呢?希望能夠講清楚,然後才能夠編寫程式的
15樓:匿名使用者
dim i as integer,v as double,sum as double
dim x as double
x=2:i=1
v = i/x ^i
do while v>0.000001
if i mod 2=1 then sum = sum+vif i mod 2 =0 then sum = sum - vi=i+1
v = i/x ^i
loop
VB程式For迴圈問題,VB中的For迴圈的問題
把if條件換下就可以了,試試下面的程式 for j 1 to rows 行 for i 1 to columns 列 if j scan int j scan 1.99 then print 1,print 1,str int j scan 0.99 pin1 cstr i print 1,desi...
vb中的UBound的問題,VB中ubound()是什麼意思啊?
先說多維陣列 在一維陣列中,我們例如說從桌子左邊到右邊,每1cm為一個單位,可以有陣列 長度 i 這個i從0到120 在二維陣列中,我除了左右,我們有按照前後,每1cm為一個單位就有了陣列 桌面 i,j 這個1從0到120,j從0到60 在三維陣列中,我們除了前後左右,再加上上下,從下到上也每1cm...
VB的迴圈問題
你這個問題是不是想說當n 1,n 2和n 3時,執行這段 一次後的值?如果是這樣,那你的理解是對的。這種情況下,你用dim定義s和用static定義s,運算結果沒有區別。但是執行多次的結果就不一樣了。當退出執行這段程式的過程後,用dim定義的變數,不管過程中是否有變化,每次執行過程都是從第一次執行該...