1樓:匿名使用者
如果沒有其他條件使迴圈變數的值發生變化,當第一次迴圈條件滿足時,step為0將造成死迴圈,當第一次迴圈條件不滿足時,step為0不迴圈
2樓:岔路程式緣
先看這幾句執行時的作用:
(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 ***mand1_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 ***mand1_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
3樓:淡智板環
for迴圈
是定長迴圈
.在迴圈開始後
把step
值加到迴圈計數器
(i)裡。並不會動態改變step。
step
的值可以是正數,負數,或0
.為0時,就會無限迴圈.
如果你要動態改變step
你就要用do
或while
迴圈實現。
4樓:我們的夢
使用下面的語句測試,說明它應該是無限迴圈的。
private sub ***mand1_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迴圈語句中step的意思
5樓:匿名使用者
是的,for i = 1 to 10 step 2 表示從1開始迴圈,每次變數加2
6樓:匿名使用者
i=1,x=5+1/5=5
i=3,x=5+3/5=5
i=5,x=5+5/5=6
i=7,x=6+7/5=7
i=9,x=7+9/5=8
7樓:匿名使用者
每次迴圈你的計數器,也就是i加2,如果不寫(保持預設)就是隻加1
8樓:雙心依月
step是步階,就是迴圈每執行一次,i的值就加2.
9樓:和清綺希麥
哦,這個結果我已經執行過了!
都是11!沒什麼區別!
從0-1,每次增加0.1,迴圈11次。所以累加後和為11從0-0.1,每次增加0.01,迴圈11次,所以累加後和也為11沒什麼區別!!!
下面是我執行的**
private
sub***mand1_click()n=0fori=
0to0.1step
0.01n=
n+1next
"n="&n
k=0forj=
0to0.1step
0.01k=
k+1next
"k="&k
endsub
剛才又把i的變數定義為整型,單精度,雙精度。分別實驗了一下,用msgbox嘗試輸出了每次迴圈中i與n的結果,發現當單精度的時候,i=0.1,....
0.7,0.800001,0.
90001,所以導致最後結果就變成10次了!
因此懷疑是單精度的時候,在0.7+0.1的過程中,導致結果運算出錯。就導致後面一系列的錯誤了。。
如果你還想查具體原因,參照單精度的範圍,自己再仔細研究了。
關於vb 中 for next語句中迴圈變數與step的問題
10樓:匿名使用者
哦,這個結果我已經執行過了!
都是11!沒什麼區別!
從0-1,每次
增加0.1,迴圈11次。所回以累加後和為答11從0-0.1,每次增加0.01,迴圈11次,所以累加後和也為11沒什麼區別!!!
下面是我執行的**
private sub ***mand1_click()n = 0
for i = 0 to 0.1 step 0.01n = n + 1
next
print "n=" & n
k = 0
for j = 0 to 0.1 step 0.01k = k + 1
next
print "k=" & k
end sub
剛才又把i的變數定義為整型,單精度,雙精度。分別實驗了一下,用msgbox嘗試輸出了每次迴圈中i與n的結果,發現當單精度的時候,i=0.1,....
0.7,0.800001,0.
90001,所以導致最後結果就變成10次了!
因此懷疑是單精度的時候,在0.7+0.1的過程中,導致結果運算出錯。就導致後面一系列的錯誤了。。
如果你還想查具體原因,參照單精度的範圍,自己再仔細研究了。
11樓:
這是「精度」的問題,
這個 for i = 0 to 0.1 step 0.01 的i值遠遠超過了single的範圍,先看看single與double的區別你就會明專白為什麼:
single(單屬精度浮點型)變數儲存為 ieee 32 位(4 個位元組)浮點數值的形式,
它的範圍在負數的時候是從 -3.402823e38 到 -1.401298e-45,
而在正數的時候是從 1.401298e-45 到 3.402823e38。single 的型別宣告字元為感嘆號 (!)。
double(雙精度浮點型)變數儲存為 ieee 64 位(8 個位元組)浮點數值的形式,
它的範圍在負數的時候是從 -1.79769313486232e308 到 -4.94065645841247e-324,
而正數的時候是從 4.94065645841247e-324 到 1.79769313486232e308。double 的型別宣告字元是數字符號 (#)。
12樓:河中的沙粒
single 為單精度浮點型,由於你用的是小數,在記憶體計數器中0.01和0.1的差別不只是10倍的版關係,具體你可權以再百科中看一下他們在記憶體中的儲存數是多少,所以你如果用single 型別的話就不可以用小數來區別這兩種演算法,如果想用小數區分的話推薦你用其他型別
在vb的for迴圈語句中的step有什麼作用,我每次看到這裡都不明白step到底怎麼使用,什麼時候用,後者為什麼
13樓:匿名使用者
步長,你迴圈從1to10, 每次加多少呢
step就是 每次加多少 不寫 就是 預設加1
14樓:匿名使用者
一般迴圈變數都是以1為單位增加,但當需要以2或其他單位增加時就可以用step了
15樓:匿名使用者
for...next 語句示例
本示例使用 for...next 語句建立一個字串,其內容為由 0 到 9 的十個數字所組成的字串,每個字串之間用空格隔開。外層迴圈使用一個變數當作迴圈計數器,每迴圈一次,變數值減一。
dim words, chars, mystring
for words = 10 to 1 step -1 ' 建立 10 次迴圈。
for chars = 0 to 9 ' 建立 10 次迴圈。
mystring = mystring & chars ' 將數字新增到字串中。
next chars ' increment counter
mystring = mystring & " " ' 新增一個空格。
next words
vb中一個簡單for迴圈的問題
16樓:匿名使用者
for迴圈的格式是:
for 迴圈變數=初值 to 終值 [step 步長][語句]
next[迴圈變數]
當步長預設時,預設值為1。
在visual basic中for迴圈屬於「先檢查後執行」語句,這種語句的執行過程:
當步長為正,「迴圈變數」首先取得「初值」,檢查是否超過「終值」,如果超過就一次也不執行而跳出迴圈。如果沒有超過就執行迴圈體內的語句;然後把「迴圈變數」+「步長」賦給「迴圈變數」;然後再與終值比較,如果小於終值則執行語句。重複上述過程,直到迴圈變數超過終值。
當步長為負,則要檢查「迴圈變數」是否小於「終值」。
所以,當k=10時,k值不超過終值10,程式會執行下一輪迴圈,當k=11時,11>終值10,程式不再迴圈,此時k已等於11。
17樓:
k=10的時候仍然符合迴圈要求,要進行一輪迴圈的。
只有到了11時才不符合迴圈要求,繼續執行next之後的操作。
18樓:匿名使用者
因為k等於10時條件滿足,迴圈繼續執行,執行next k ,這時k的值等於11,不滿足條件,迴圈結束。
19樓:匿名使用者
初值為1,執行了十次,就是11
VB中的迴圈語句有哪些,vb中的迴圈語句
1 do while.loop 當條件為true時迴圈,在進入迴圈之前檢查條件。2 do.loop while 當條件為true迴圈,在迴圈至少執行一次後檢查條件。3 do until.loop 當條件為false迴圈,在進入迴圈之前檢查條件。4 do.loop until 當條件為false迴圈,...
VB停止迴圈的問題
什麼亂七八糟啊,整這樣幹嘛。去和系統搶執行緒的優先權啊,直接在程式裡判斷就好了。定義一個全域性變數,isend 當按f10的時候,isend 1 for i 0 to 20 if isend 1 then endelse command1 click end if next ctrl break肯定...
關於vb中的for迴圈語句,關於VB中的for迴圈語句?
for i 0 to 10 step 2,意思是第一次執行時,i 1,下一次時i 1 2,在下一次i i 2 2,直到i 10結束 如果為負數 for i 10 to 1 step 2,那麼就是第一次i 10.第二次i 10 2,第三次10 2 2,直到i 0結束 步長就跟咱們走路一樣啊。比如路程是...