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

2021-12-20 05:17:42 字數 4993 閱讀 8412

一、變數值的交換

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

以下**是錯誤的:

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)函式轉換。例如:

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 =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

= s2

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

private sub command1_click()

s =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

= 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

C語言重要知識點

總體上必須清楚的 1 程式結構是三種 順序結構 迴圈結構 三個迴圈結構 選擇結構 if 和 switch 2 讀程式都要從main 入口,然後從最上面順序往下讀 碰到迴圈做迴圈,碰到選擇做選擇 3 計算機的資料在電腦中儲存是以二進位制的形式.資料存放的位置就是他的位址.4 bit是位是指為0 或者1...

高中資訊科技演算法與程式設計VB

高中資訊科技 演算法與程式設計vb 選修 知識要點 相關知識點 一 演算法 1.定義 相關題解 1演算法 就是解決問題的方法和步驟。演算法是程式設計的 靈魂 演算法 資料結構 程式。單選題1 運用電腦程式解決實際問題時,合理的步驟是 b a 設計演算法 分析問題 編寫程式 除錯程式 b 分析問題 設...

C語言程式設計小結精華

二級c語言程式設計模擬試題 1 8 下面程式的功能是統計從命令列上傳遞進來的第乙個引數 現字母個數。請填空完善程式。注 引數個數從0開始記數 include include void main int argcar 填空題答案 1 main函式 2 cos fabs x y sin fabs x f...