順序演算法vb
A. 怎樣用VB編寫一個文件加密程序
位元組逐位倒排序加密法是以比特為單位的換位加密方法,用VB實現的具體演算法是:
(1) 以二進制模式打開源文件;
(2) 從源文件第I位讀取一個位元組,假設為字母「A」,得到「A」的ASCII值為65;
(3) 將65轉換成八位二進制串為「01000001」;
(4) 將「01000001」按位元組逐位倒排序得另一個八位二進制串「10000010」;
(5) 將「10000010」轉換成十進制再寫回源文件第I位置,完成一個位元組的加密;
(6) 重復(2)、(3)、(4)和(5),直到所有位元組加密結束。
為了使程序模塊化,我們用函數過程ByteToBin完成將位元組型數據轉換成二進制串(其實質就是將十進制數轉換成八位二進制串);用函數過程BinToByte將二進制串轉換成位元組型數據(實質是將八位二進制串轉換成十進制數):用函數過程Reverse將八位二進制串逐位倒排序。具體程序如下:
Function ByteToBin(m As Byte) As String ' 將位元組型數據轉換成八位二進制字元串
Dim c$
c$ = ""
Do While m <> 0
r = m Mod 2
m = m \ 2
c$ = r & c$
Loop
c$ = Right("00000000" & c$, 8)
ByteToBin = c$
End Function
Function Reverse(m As String) As String ' 將八位二進制字元串顛倒順序
Dim i%, x$
x = ""
For i = 1 To 8
x = Mid(m, i, 1) & x
Next i
Reverse = x
End Function
Function BinToByte(m As String) As Byte ' 將八位二進制串轉換成十進制
Dim x As String * 1, y%, z%
z = 0
For i = 1 To 8
x = Mid(m, i, 1)
y = x * 2 ^ (8 - i)
z = z + y
Next i
BinToByte = z
End Function
Private Sub Command1_Click()
Dim x As Byte, i%, fname$
fname = InputBox("請輸入要加密的文件名!注意加上路徑名:")
If Dir(fname) = "" Then
MsgBox "文件不存在!"
Exit Sub
End If
Open fname For Binary As #1 ' 以二進制訪問模式打開待加悔穗扒密文件
For i = 1 To LOF(1) ' LOF函數是求文件長度的內部函數
Get #1, i, x ' 取出第i個位元組
x = BinToByte(Reverse(ByteToBin(x))) ' 這里調用了三個自定義函數
Put #1, i, x ' 將加密後的這個位元組寫回到文件原位置
Next i
Close
MsgBox "任務完成!"
End Sub
本例可以完成對任意文件的加密與解密,對同一文件作第一次處理為加密,第二次處理為解族搭密。要調試本程序,碧昌可用記事本在C盤根目錄下任意建立一個文本文件(假設為文件名為aaa.txt),其中的內容任意(可以包括字母、漢字、數字、回車符、換行符等)。運行本程序後,在輸入文件名的對話框中輸入文件名(如:「C:\aaa.txt」)後回車,即可完成對文件的加密。文件加密後,可以在記事本中打開該文件查看加密效果。如果想解密,可再次運行該程序並輸入相同文件名。
B. 如何用VB進行排序
方法步驟如下:
1.首先,定義一個結構,包括數值、排名和序號。
注意:
(1)交換排序:參照求最大值和最小值的思想,按升序排序的基本過程是將第一個數字與下一個數字進行比較。如果後面的數字很小,那麼交換和第一個數字的位置。否則,不要交換。
(2)氣泡排序:交換和重復兩個相鄰數字的過程。一般來說,如果有n個數字要排序,則需要n-1起泡。
(3)選擇排序:在交換順序的基礎上,找出剩餘數量的最大值,並與地面上的I+1數量進行交換,使得每輪比較中只有一次交換操作,該演算法最多隻有n-1個交換操作。