1樓:
你要知道if c mod 2 =0 then 語句才執行,其他的是每次迴圈都執行
開始s=1+1=2
i=3c=1, c mod 2=0 不成立,後面不執行a=1 b=1
i=4c=2, c mod 2=0成立 s=2+c=2+2=4a=1 b=2
i=5c=3 ,c mod 2=0 不成立,後面s=s+c不執行a=2,b=3
i=6c=5 c mod 2=0 不成立,後面s=s+c不執行a=3,b=5
i=7c=8 c mod 2=0成立 s=4+c=4+8=12a=5,b=8
i=8c=13 c mod 2=0 不成立,後面s=s+c不執行a=8,b=13
i=9c=21 c mod 2=0 不成立,後面s=s+c不執行a=13,b=21
i=10
c=34 c mod 2=0成立 s=12+c=12+34=46a=21,b=34
迴圈結束,列印s值就是46
2樓:cy滄海月明
a,b=1,c=2,s=2+2,i=3
a=1,b=2,c=3,s=4,i=4
a=2,b=3,c=5,s=4,i=5
a=3,b=5,c=8,s=4+8,i=6a=5,b=8,c=13,s=12,i=7a=8,b=13,c=21,s=12,i=8a=13,b=21,c=34,s=12+34.i=9a=21,b=34,c=55,s=47,i=10
問一道vb的題,謝謝哪位大神
3樓:匿名使用者
朋友,你這個涉及到的知識還真不是一點點,而且還不好解釋,不過我還是想幫幫你:
一,變數的作用域(生命週期):
實驗1:
private sub command1_click()
dim a as integer
a=99
print "按鈕1",a
end sub
private sub command2_click()
dim a as integer
a=100
print "按鈕2",a
end sub
兩個過程裡,都有變數a,結果是互不相干的。(這個我想你應該理解,如果不理解,自己編個程式,用這個**試驗一下,在體會一下;而且先單擊哪個按鈕不會影響顯示結果)
實驗2:private a as integer '窗體極變數
private sub command1_click()
a=66
print "按鈕1",a
end sub
private sub command2_click()
dim a as integer
a=100
print "按鈕2",a
end sub
private sub command3_click()
a = a + 1
print "按鈕3", a
end sub
單擊次序:按鈕1、按鈕2、按鈕3。結果:
按鈕1 66
按鈕2 100
按鈕3 67
command1_click()過程裡沒有宣告變數a,可以使用窗體級變數a,輸出沒有疑問;
command2_click()過程裡宣告瞭區域性變數a,就有問題了,這裡當執行a = 100的時候,到底是指哪一個a呢?vb規定,指的是過程中自己用dim宣告的變數a,同樣輸出沒有疑問;
command3_click()過程裡沒有宣告區域性變數a,使用的也是窗體級變數a,而且這個時候窗體級變數a已經存有66,輸出沒有疑問;
結論:1)過程級變數只能被本過程識別和使用,窗體級變數能夠被本窗體的任何位置識別和使用,但是當過程變數與窗體變數出現同名時,在在過程中識別的是本過程變數。
2)養成宣告變數的習慣,便於糾錯。
二,關於子程式(包括過程和函式)的概念:
有:形式引數,實際引數;傳遞數值與傳遞地址;等概念
例子1:
有過程:
private sub a(byval x as integer,byref y as integer)
print x,y
x = 100
y = x + 1
print x,y
end sub
概念:過程名叫a,括號中有兩個形式引數x,y;
其中x叫傳遞數值的形式引數(由關鍵字byval宣告),y叫傳遞地址的形式引數(由關鍵字byref宣告,byref可以不寫)。
下面用command1_click()事件去呼叫該過程,來說明:
private sub command1_click()
dim x as integer
dim y as integer
x = 5
y = 6
call a(x,y) '用call語句呼叫子過程,這裡格式類似宣告過程的格式:a過程名,括號裡有2個引數(實際引數)
print x,y
end sub
call a(x,y)
用call語句呼叫子過程,這裡格式類似宣告過程的格式:a過程名,括號裡有2個引數(實際引數),其實實際引數與形式引數的名可以相同也可以不同。
但是,必須型別一致,一一對應,
也就是說,系統在執行呼叫時,根據先後位置一一對應的,呼叫語句中的x對應宣告語句中的x,呼叫語句中的y對應宣告語句中的y;
即:把呼叫語句中的x傳遞給宣告語句中的x,把呼叫語句中的y傳遞給宣告語句中的y;
如果這樣呼叫
call a(y,x)
結果:把呼叫語句中的y傳遞給宣告語句中的x,把呼叫語句中的x傳遞給宣告語句中的y;
執行上述**,顯示結果:
5 6 '這個容易理解,在過程a裡第1次的輸出,x,y由外部傳遞給過程a的
100 101 '這個也好理解
5 101 '這是command1_click()實踐裡的輸出結果,這個怎麼理解呢?
解釋:傳遞數值:呼叫語句把外部的數值(變數的值或表示式的值或常數)傳遞給自定義過程對應的變數(外部變數與過程內部變數互相獨立,只是數值傳遞)
傳遞地址;呼叫語句把外部變數的地址(只能是變數,不可以是表示式或常數)傳遞給自定義過程對應的變數(過程內部變數的操作其實就是對外部那個變數的操作)
所以在command1_click()裡,x是傳遞數值,結果保持傳遞前的值不變;y傳遞地址,結果與過程a的結果一致,其實是同一個變數。
這樣你應該,會分析自己的問題了吧!
你的2個函式裡的引數,都是傳遞地址型別的引數!
呵呵,問題描述簡單,回答很累人!
問一道vb的題目,請高手回答,謝謝!
4樓:餘同書由君
輸出為7
vb中rnd函式輸出一個小於1大於等於0的小數int是取整函式
故x=int(rnd)+3=3,x^2=9所以y=x^2-2=9-2=7
vb裡一道題求解,求解VB一道題 最好解釋每一步
迮悅 private sub command1 click text1.visible falseend sub private sub command2 click text1.text vb程式設計 text1.visible true text1.fontsize 16 end sub pri...
求助一道VB題
private sub form load dim i as long dim x as long dim sum1 dim sum2 dim sum3 for i 1 to 30 x 100000 sum1 sum1 x next debug.print 窮人給富商的錢為 sum1sum2 0.0...
問一道數學題,問一道數學題?
當n 時,n中不等式不成立,所以2 t 2t 1。於是1 3t,t 1 3.n 時由n包含於m,2 2 t 2t 1 5,左對左,左 右,右對右 可以嗎? 羅羅 注意 區間的 左邊要小於右邊。 同學你學過數軸了吧。空集的概念是用數軸表示就是沒有交集,沒有交集說明x小於的那個數是要小於比x大的那個數的...