VB Sub過程(追加分數)

2025-03-26 09:15:27 字數 3312 閱讀 6687

1樓:網海1書生

你這裡的兩個sub中的x都是區域性變數,也就是說只能在sub內部起作用,到了外部就失效了。所以要在sub外部定義變數x,使其成為全域性變數。

其實最好的辦法是用自定義函式,就可以不用定義全域性變數了:

private sub form_click()dim x as integer

x = 1x=mysub4(3+x)

print x

end sub

private function mysub4(x as integer)

x = 3 * x - 1

if x < 5 then x = x + 9print x;

mysub4=x

end function

執行結果是 11 11

補充:出現「byref引數型別不符」的原因,是因為你沒有定義x為integer型別。

再補充:private sub form_click()dim x as integer

x = 4mysub4 x

print x

end sub

private sub mysub4(x as integer)x = 3 * x - 1

if x < 5 then x = x + 9print x;

end sub

2樓:網友

因為兩個變數 x都是過程變數而已。雖然名稱相通,但只要離開了該過程,那麼該變數也隨之消失了。

比如,第乙個過程的x只屬於sub form_click()的,第二個過程的x只屬於sub mysub4()的。

vb中的sub過程求解釋

3樓:網友

swap(b())中的b()表明該引數是乙個動態陣列,也就是說對於swap而言,不管多大的陣列都能夠處理,在執行時通過ubound函式得到陣列的最大下標。

程式執行到call swap(a)時,把a陣列作為實際引數傳遞給了swap過程,這個傳遞實質上是傳遞a陣列存放資料的位址,因此swap過程中對b陣列的操作也就是對a陣列的操作,a(1)=b(1),你說得沒錯,就是這樣。

建議仔細看看書,關於函式和過程的實參與虛參的概念。

4樓:網海1書生

函式的引數傳遞預設是採用按址傳遞(byref)的方式,就是說,當執行call swap(a)

時,實際上是把陣列a的記憶體位址傳遞給函式swap,也就是說b陣列這個形式引數與a陣列這個實際引數所指向的都是同乙個記憶體位址,所以在swap內部對b陣列進行處理時,實際上也同時是對a陣列的處理,所以當swap執行完畢後,a陣列的值也改變了。

如果函式swap的定義改為:

public sub swap(byval b() as integer)

這就變為按值傳遞了,不管swap內部對b陣列怎麼處理,a陣列的值都是不變的。

vb 中的 sub 過程是什麼意思?

5樓:維維豆奶

sub過程也稱為子過程,是在響應事件時執行的**塊或是被事件過程呼叫的完成一定功能的通用**塊。子過程不帶返回值,子過程的語法是:

privatelpublic][static]sub procedurename(arguments)

statements

end sub

每次呼叫過程都會執行sub和end sub之間的statements,可以將子過程放入標準模組、類模組和窗體模組中。預設時,所有模組中的子過程都為public(公用的)。

即可以在應用程式中的任何地方呼叫它。如果使用private宣告子過程,則該子過程只能在宣告它的模組中呼叫。過程arguments類似於變數宣告,它宣告瞭呼叫過程時傳遞進來的值。

vb中用遞迴求最大公約數的function或sub過程,在窗體模組中呼叫,來對分數進行化簡

6樓:網友

public function bb(a as long, b as long) as long

dim ia as long, ib as longif a > b then

ia = a

ib = b

elseia = b

ib = a

end if

bb = a mod b

if bb = 0 then

bb = b

elsebb = bb(b, bb)

end if

end function

以上function用遞迴求最大公約數,'化簡**就自己寫把。

vb 中關於sub過程的呼叫問題

7樓:網友

private sub command1_click()'aaa ("3", "3") '這個寫法報錯了,注意體會,當有兩個引數時,直接呼叫就不用寫括號了。

aaa "3", "3" '這個正常call aaa("3", "3") '這個也正常end sub

sub aaa(x as string, y as string)msgbox x & y

end sub

8樓:網海1書生

你仔細看就會發現,aaa (3) 中的aaa和(3)之間是有個空格的(即使你沒加空格,vb也會自動給你加上的),這也就是說,(3)的括號已經不是aaa這個過程所帶引數的括號了,而是作為乙個單獨的表示式了,就像(3+2)*5這裡的括號跟+-*/的作用是一樣的。

所以 aaa (3)跟aaa 3的結果是一樣的,而且它跟「如果不用call,直接呼叫,那麼就要去掉括號」的說法是不矛盾的,因為這兩種括號根本就不是同一回事。

你自己在vb試驗一下就知道:

print 3

print (3)

以上兩個語句的執行結果是一樣的,都是3

9樓:

1、呼叫sub過程 如果用call關鍵字 如果過程本身帶有引數 則呼叫時一定要帶括號 如果沒有引數則可以省略括號。

2、如果不用call,直接呼叫,那麼就要去掉括號這些是對的。

至於aaa (3)只是個特例,即 (3)當作1個表示式處理這裡可以 aaa 3 也可以aaa 3*(1+2)當然也可以aaa (3)

舉個更加特殊的 aaa 3*(1+(2))也可以的,你就容易理解了。

此括號不是彼括號。

vb程式有關sub過程看不太懂。。求專業人士解答~~

10樓:碰撞時空

這裡的a=14

因為,在這個函式中的開始,就將a重新賦值了。

可以除錯、跟蹤一下,看看中間值。

物理追擊問題。。。後追加分數。。

在a點建立座標系 任意t時,甲的位置 ,v t 乙的位置 v t,so 兩點距離平方 d v t so v t v v t v so t so 即計算他的最小值。最小值時t a b v so v v 代入開根號得最小距離。注 代表平方 先畫圖,我是這樣畫的,a n b m設在t時刻距離最短,最短距離...

撒滿選什麼種族?(會追加分數!)

巨魔吧。我認為不錯。狂暴 亂舞。功速不言而喻。自己總結了可選薩滿職業的三大種族的不同地方 一 在近身攻擊他人或者受他人近身攻擊的最大距離上獸人和巨魔的是5碼,牛頭人的則是9碼,足足相差了4碼二 獸人 牛頭人和巨魔的種族天賦如下 獸人 v1.11 1.命令 被動種族特長 獵人和術士的寵物的近戰傷害提高...

三道數學題 滿意有追加分數

設a b兩地距離為x km,火車速度為v km 小時。x v x v 兩個方程合解v km 小時。到達c站的時間t s v 小時。小時 km 小時。.a c e d b 設小李速度為x,小明為y,a b兩地為z x y z x y 合解得z km .據已解得的人數人,設租客座的為x輛,客座的為y輛。...