VB常用演算法總結2019

2021-10-23 07:59:59 字數 4993 閱讀 2836

vb常用演算法總結 2010-05-08 07:21:13| 分類: 計算機等級考試二 | 標籤: |字型大小大

中小訂閱

本人多年一直在輔導計算機等級考試二級vb,以下為整理的vb常用演算法總結,在輔導中是必須要重點掌握的,非常實用,希望對你的學習也有幫助。在學習中有需要幫助的網友可以傳送郵件至 hongse_

常用演算法總結

一、變數值的交換

演算法思想:若交換兩個變數的值,必須引入第三個新的變數進行傳遞。

以下**是錯誤的:

x=12 :y=34 :x=y :y=x

正確的**是:

x=12 :y=23 :t=x :x=y :y=t

二、判斷乙個數是否能被另乙個數整除

演算法思想:可以用整除的定義(餘數為0)或x除以y等於x整除y等表示式進行判斷。

條件表示式可以為:x mod y=0 或 x\ y=x/y 或 int(x/y)=x/y

如果以上條件表示式為true,則表示x能被y整除。

三、累加、階乘、計數和求平均值

演算法思想:使用迴圈語句,並用乙個變數存放累加的中間及最終結果。

注: 累加求和時變數初值為0,計算階乘時變數初值為1。

統計個數(計數)時可用乙個變數作為統計個數的累加變數,每次加1即可。

求平均值演算法思想是先求和,再除以個數。

條件求和(或計數):在迴圈語句中加入if-end if判斷語句。

例題:計算1到10之間所有整數的累加和以及10!。

n=10

sum=0累加求和時,變數的初值一定為0

prod=1累乘(連乘)時,變數的初值一定為1

for i=1 to n

sum=sum+i

prod=prod*i

next i

print sum,prod

例題:統計0—100之間能被3整除的數的個數、累加和及其平均值。

s=0n=0for i=0 to 100

if i mod 3 =0 then

s=s+i

n=n+1

end if

next i

print n,s,s/n

四、對陣列中的元素逐一進行操作

演算法思想:在vb中,對於陣列中元素的操作,往往使用到for迴圈。通用**為:

dim 陣列名([下標下界] to 下標上界)

……for i=lbound(陣列名) to ubound(陣列名)

…… 陣列名 ( i ) ……

……next i

通過以上迴圈,可以對陣列中所有元素逐一操作。

注:1) lbound函式:返回陣列的下界

ubound函式:返回陣列的上界

2)如果陣列上界和下界已經確定,可以不使用函式,直接指明即可。例如

option base 1

dim a(100) as integer

for i=1 to 100

……a ( i ) ……

……next i

3)對於二維陣列,要使用for迴圈的巢狀實現對陣列中元素的操作,其中外層迴圈變數控制第一維下標的變化,內層迴圈變數控制第二維下標的變化,例如:

option base 1

dim a(2,3) as integer

for i=1 to 2

for j=1 to 3

……a (i,j) ……

……next j

next i

例題:1.對下標為偶數的元素進行處理的程式**

option base 1

……for i=1 to ubound(a迴圈變數i可代表陣列元素的下標

if i mod 2 =0 then

a (i) ……

end if

next i

2.對陣列元素中資料為偶數的元素進行處理

option base 1

……for i=1 to ubound(a迴圈變數i代表陣列元素的下標

if a(i) mod 2 =0 then

a (i) ……

end if

next i

五、交換陣列元素

演算法思想:若某一維陣列有n個元素,將第1個元素和第n個元素交換,將第2個元素和第n-1個元素交換……,需要交換n\ 2次(如果交換n次,則回到初始狀態);對於二維陣列,若進行行交換或列交換,需要使用迴圈語句,每次迴圈需要使用變數值交換演算法。

例題:交換一維陣列(5個元素)的元素值

b = array(1, 3, 5, 7, 9)

for i = 0 to 5\ 2

tmp = b(i)

b(i) = b(5 - i - 1)

b(5 - i - 1) = tmp

next i

end sub

例題:一維陣列元素交換的通用**:

n = ubound(陣列名)

for i = lbound(陣列名) to n \ 2

t = b(i)

b(i) = b(n)

b(n) = t

n = n - 1

next i

例題:交換二維陣列mat第二列和第四列的資料

for i=lbound(mat,1) to ubound(mat,1)

t = mat(i, 2)

mat(i, 2) = mat(i, 4)

mat(i, 4) = t

next i

例題:交換二維陣列mat第一行和第三行的資料

for j=lbound(mat,2) to ubound(mat,2)

t = mat(1, j)

mat(1,j) = mat(3,j)

mat(3,j) = t

next i

六、求陣列元素中的最大值、最小值

演算法思想:假設陣列中第乙個元素為最大值,並賦給變數max,然後使用迴圈結構依次與第2個陣列元素至最後乙個元素進行比較,如果某陣列元素的值大於max,則將該元素的值賦給max(同時可記錄下該陣列元素在陣列中的位置)。

例題:顯示陣列a中的最大值及其下標。

option base 1

dim max as integer, index as integer

max=a(1)

aindex=1

for i=2 to ubound(a)

if a(i)>max then

max=a(i)

aindex=i

end if

next i

print max , i

求最小值的方法與此類似,差別在於取第乙個元素為最小值min,與2個陣列元素至最後乙個元素進行比較時判斷關係有所調整,即

min=a(1)

if a(i) min=a(i)

end if

七、常用字元處理函式

mid函式:從字串指定位置取指定個字元,格式為mid (字元,p,n) ,從第p個字元開始,向後擷取n個字元(若n省略則取到最後)。

left和right函式:從字串左邊或右邊取指定個字元,格式為 left (字元,n)和right (字元,n)。

len函式:測試字串長度。

ucase和lcase函式:ucase將小寫字母轉換為大寫字母;lcase將大寫字母轉換為小寫字母。

instr([首字元位置 , ] 字串1, 字串2 [ , n]):在字串1中查詢字串2,如果找到,返回字串2的第乙個字元在字串1**現的位置。首字元位置是可選的,如果不指定,從字串起始位置開始查詢;如果指明,從指定的位置開始查詢。

asc函式:返回字串中第乙個字元的ascii碼。

chr函式:將乙個數值轉換為其所對應的字元。

字元的比較規則是按ascii碼順序比較,規則為空格<」a」~」z」<」a」~」z」

小寫字母的ascii比大寫字母的ascii小32。

例題:1.將所有文字轉換為大寫(小寫)字母

可以直接使用ucase(lcase)函式轉換。例如:

text2.text=ucase(text1.text)

2.對某個字串的所有字元逐一處理

演算法思想:如果對某個字串的所有字元逐一處理,即從字串的第1個字元開始到最後乙個字母,每次處理1個字元。可以使用for迴圈實現。通用**為:

for i=1 to len(s)

s1=mid(s,i,1)

…… next i

3.字元轉換

演算法思想:通過字元的ascii碼進行處理(使用asc函式),然後再使用chr函式將ascii轉換成字元。

例題:將文字框text1中字元按如下規律轉換a-b、b-c……z-a,並顯示在文字框text2中。

s = text1.text

n = len(s)

for i = 1 to n

s1 = mid(s, i, 1)

if s1 >= "a" and s1 <= "y" then

s2 = s2 + chr(asc(s1) + 1)

elseif s1 = "z" then

s2 = s2 + "a"

end if

next i

text2.text = s2

例題:將文字框text1中的小寫字母轉換其對應的大寫字母,將大寫字母轉換成小寫字母,並顯示在文字框text2中。

private sub command1_click()

s = text1.text

n = len(s)

m = asc("a") - asc("a")

for i = 1 to n

s1 = mid(s, i, 1)

if s1 >= "a" and s1 <= "z" then

s2 = s2 + chr(asc(s1) - m)

end if

if s1 >= "a" and s1 <= "z" then

s2 = s2 + chr(asc(s1) + m)

end if

next i

text2.text = s2

end sub

VB 常用演算法總結

一 變數值的交換 演算法思想 若交換兩個變數的值,必須引入第三個新的變數進行傳遞。以下 是錯誤的 x 12 y 34 x y y x 正確的 是 x 12 y 23 t x x y y t 二 判斷乙個數是否能被另乙個數整除 演算法思想 可以用整除的定義 餘數為0 或x除以y等於x整除y等表示式進行...

vb常用演算法介紹

一 累加演算法 如果在設計過程中遇到求1 2 3 100等連加問題時,就可以用累加演算法來解決。累加演算法的一般做法是設乙個變數 s,作為累加器使用,初值為0,設乙個變數用來儲存加數。一般在累加演算法中的加數都是有規律可循,可結合迴圈程式來實現。乙個迴圈程式的設計,如果以下三方面確定下來 變數的賦初...

VB程式語言重要演算法小結

一 變數值的交換 演算法思想 若交換兩個變數的值,必須引入第三個新的變數進行傳遞。以下 是錯誤的 x 12 y 34 x y y x 正確的 是 x 12 y 23 t x x y y t 二 判斷乙個數是否能被另乙個數整除 演算法思想 可以用整除的定義 餘數為0 或x除以y等於x整除y等表示式進行...