關於vb迴圈次數的問題?急,VB計算迴圈的次數

時間 2022-05-04 13:00:02

1樓:教師小站

●誤差造成:

請看這段程式:

private sub form_click()

dim i as single

for i = 0.2 to 1 step 0.1

print i

next

end sub

輸出結果是:

.2.3

.4.5

.6.7

.8000001

.9000001

你可以把程式放入vb除錯一下,最後2行也這樣。 而且也少執行了一次 。

●這個程式是有解決方法的:**改成 dim i as double 就對了。

●這是因為計算機在計算single的時候是按二進位制移位進行的,也就是說,計算機本身的精度有一定的偏差,在這種情況下,後面不夠0.1了,所以就不迴圈了

**************

●你的程式雖然沒有定義i為single,但執行一次迴圈,變數i變成1.1時,vb就自動把i轉換成了single型別。

●最後,你可以給學生演示這幾種,幫助他們明白:

***********************

還是用你的程式吧:

for i = 0 to 1 step 0.1 ---迴圈11次

for i = 1 to 2 step 0.1 ---誤差!少1次!

for i = 2 to 3 step 0.1 ---迴圈11次

for i = 3 to 4 step 0.1 ---誤差!少1次!

... ...

是不是很奇怪呢?我剛才寫回復的時候也很奇怪:當初值是偶數,次數正確,初值為奇數,就會少一次!

●所以你可以這樣跟學生說,當迴圈到第10次的時候,i變成1.9000001,第11次時i變成2.0000001 了!!!

2.0000001>2,所以最後一次迴圈沒被執行

2樓:

按照公式的意思是:

11.1

1.21.3

1.41.5

1.61.7

1.81.9

211次

不過vb好像最後一個2 沒有執行.

ps.把改成for i = 10 to 20的話執行了11次

3樓:匿名使用者

是奇怪了呢,可能就是浮點數惹得禍,改成這樣就正確了,

for i = 1 to 2 step 0.099999999

所以最好不要用小數做步長.

4樓:逢元修喬亥

執行順序是:

30(j=1)-40(k=6)-50(mk=6)-60-70(k=4)-40-50(mk=4)-60-70(k=2)-40-50(mk=2)-60-70(k=0)-40-80(j=4)-

30-40(k=6)-50(mk=6)-60-70(k=4)-40-50(mk=4)-60-70(k=2)-40-50(mk=2)-60-70(k=0)-40-80(j=7)-

30-40(k=6)-50(mk=6)-60-70(k=4)-40-50(mk=4)-60-70(k=2)-40-50(mk=2)-60-70(k=0)-40-80(j=10)-

30-40(k=6)-50(mk=6)-60-70(k=4)-40-50(mk=4)-60-70(k=2)-40-50(mk=2)-60-70(k=0)-40-80(j=13)-

30-90

可以數出來:

第四十號語句共執行了16次

第五十號語句共執行了12次

執行第90號語句後顯示的結果是:

j=13,k=0,mk=2

所以顯示的是:1302

限於篇幅,我描述的比較簡單,如果有什麼不懂可以詳細說明。

vb計算迴圈的次數

5樓:匿名使用者

碰到這種問題,我通常是這樣來計算的。首先看最內層的迴圈,計算它會迴圈多少,把這個數寫下來(如果是n,就記著n*)。就本題來看,最內層是j迴圈,它從5迴圈到1,共迴圈5次,所以,我會在草稿紙上寫5* ,現在需要*多少還不知道,所以,我再往其上一層檢視,看看還有迴圈嗎?

是迴圈多少次,如果有,按照此法寫下去,如果沒有,就寫1,計算結果。就本題看,其上一層是i迴圈,從1迴圈到3,所以,我會寫 5*3* ,再往其上一層看,沒有了迴圈,所以,最後會寫成這樣的算式:5*3*1=15。

6樓:匿名使用者

for i=1 to 3for j=5 to 1 step -1print i*ja=a+1next jnext iprint a 最後a=15 證明算了15次這是個套嵌 外*內=總次數 外3內5=15

vb 迴圈執行執行次數問題

7樓:匿名使用者

private sub command1_click()for i = 1 to 100

label1.caption = "2" '倒計時timer1.interval = 1000timer1.

enabled = truedo while timer1.enabled = truedoevents

loop

next

end sub

private sub timer1_timer()label1.caption = label1.caption - 1

if label1.caption = 0 thenlabel1.caption = "時間到"

msgbox "111111111111"

timer1.enabled = falseend if

end sub

vb 迴圈次數

8樓:網海1書生

for迴圈分解:

第1次:n=1

a=fun(b,n)+b

fun內部運**況:

形參x=y-1+n=1-1+1=1,實參b=1

形參y=x+y-n=1+1-1=1,實參n=1

fun=x+y=1+1=2

a=fun(b,n)+b=2+1=3

第2次:n=1+1=2

b=fun(n,a)+a

fun內部運**況:

形參x=y-1+n=3-1+2=4,實參n=4

形參y=x+y-n=4+3-4=3,實參a=3

fun=x+y=4+3=7

b=fun(n,a)+a=7+3=10

第3次:n=4+1=5

a=fun(b,n)+b

fun內部運**況:

形參x=y-1+n=5-1+5=9,實參b=9

形參y=x+y-n=9+5-5=9,實參n=9

fun=x+y=9+9=18

a=fun(b,n)+b=18+9=27

第4次:n=9+1=10>6,退出迴圈

此時 n=10, a=27, b=9

所以輸出結果為 10  27  9

這道題的關鍵點在於函式fun的引數x和y是傳址呼叫,函式內部對這兩個形參的值的改變會直接改變外部實參n、a、b的值

vb迴圈語句問題!!急求!!!

9樓:lxt_練習題

第一個問題,沒有看明白,想問什麼。迴圈體內部的語句被迴圈執行的次數,是由迴圈控制語句決定的。

你所說的迴圈語句迴圈次數,是否就是指迴圈控制語句的執行次數?如果你是問這個,那麼,控制語句入口處的語句執行次數一般情況下,是比迴圈體內的語句執行次數多1次,出口處的語句與迴圈體內的語句執行次數是一樣的,因為在進入迴圈體的時候,需要做判斷,符合的就進入迴圈,不符合的就跳過迴圈部分,直接執行迴圈語句之後的。比如for next迴圈,for 語句肯定會被多執行一次。

do while(until)也一樣。但也有例外,比如判斷是否迴圈的語句放在迴圈體中,就會使判斷語句之後的內容少執行一次。如,

do while (1=1)

…………

loop,這個迴圈會一直執行下去,那麼就需要在迴圈體中加入語句,滿足條件時跳出迴圈,如

do while (1=1)

……if i=10 then

exit do

end if

……………

loop

那麼,exit do 之後的語句就會比其前的語句少執行一次。

第二個問題,雙重迴圈與現實中的很多事物都有相似之處,所以其應用也是很廣泛的。比如說,你要想列舉一個學校所有的班級,假設這個學校有三個年級,每個年級有3個班, 那這個情況就與雙重迴圈很相似,你就先列一年級,1、2、3班,同理列二年級,三年級,就是一個典型的雙重迴圈,當你把這些班級都列出來的時候,就是完成了一個雙重迴圈。這個列班級的問題,也是二維陣列的一個典型應用。

關於vb中統計點選窗體次數的問題

10樓:匿名使用者

i 需要是全域性變數,才能在觸發事件時不復位

如果定義在事件裡,就變成是區域性變數,每次觸發滑鼠點選事件,i重新定義,初始值都為0

也可將i定義成靜態變數,可以取到相同效果 static i as integer

11樓:木頭

dim i as integer,在這裡宣告的是全域性變數,就是說,只要程式在執行,這個變數就一直有效

private sub form_click()i = i + 1

text1.text = i

end sub

private sub form_click()dim i as integer這裡宣告變數,只存活在本過程,過程結束,變數就無效了,而每點一次窗體,次過程就會重新執行一下,所以 i就一直是初始值+1,而i 原本沒有賦給初始值,所以預設為0,

i = i + 1

text1.text = i

end sub

12樓:匿名使用者

dim i as integer

放在過程外面就是全域性變數,值是可以累加的

但放在過程裡面。就是區域性變數,單擊一次就是一次變數。不會累加

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中的For迴圈的問題,VB中FOR迴圈STEP的問題

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 與...

VB的迴圈問題

你這個問題是不是想說當n 1,n 2和n 3時,執行這段 一次後的值?如果是這樣,那你的理解是對的。這種情況下,你用dim定義s和用static定義s,運算結果沒有區別。但是執行多次的結果就不一樣了。當退出執行這段程式的過程後,用dim定義的變數,不管過程中是否有變化,每次執行過程都是從第一次執行該...