一、變數值的交換
演算法思想:若交換兩個變數的值,必須引入第三個新的變數進行傳遞。
以下**是錯誤的:
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
4.判斷是否回文函式
所謂回文是指順讀與倒讀都一樣的字串,如「rececer」
function foundhuiwen(p as string)
foundhuiwen = true
k = len(p)
for i = 1 to k / 2
if mid(p, i, 1) <> mid(p, k + 1 - i, 1) then
foundhuiwen = false
exit for
end if
next
VB常用演算法總結2019
vb常用演算法總結 2010 05 08 07 21 13 分類 計算機等級考試二 標籤 字型大小大 中小訂閱 本人多年一直在輔導計算機等級考試二級vb,以下為整理的vb常用演算法總結,在輔導中是必須要重點掌握的,非常實用,希望對你的學習也有幫助。在學習中有需要幫助的可以傳送郵件至 hongse 常...
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等表示式進行...