vb中for迴圈step的問題VB中FOR迴圈STEP的問題

2021-03-06 22:43:36 字數 5526 閱讀 7421

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

print

"n="&n

k=0forj=

0to0.1step

0.01k=

k+1next

print

"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結束 步長就跟咱們走路一樣啊。比如路程是...