16.有一種壓縮算法,基本原理是:特殊字符+重復次數+字符. 比如有文本字符串:A A A A A B C C C C B C C C,編碼后得到:B B 5A B B 4C B B 3C.編碼串的最開始說明特殊字符B,以后B后面跟著的數字就表示出重復的次數.編程實現將從Text1輸入的一個字符串,點壓縮按鈕后用上述方法壓縮,壓縮后的編碼在Text2中輸出,text3中輸入特殊字符.壓縮算法: a)給壓縮串添加開關的特殊字符 b)逐個判斷輸入字符串的字符(當前的字符與后一個比較),如果兩個字符不同,則連到了壓縮串中,如果有連續的重復字符則計數n+1 c)最后一組重復字符或單個字符再連到壓縮串中. ?連入壓縮串方法:單個的直接連入,有重復的連入特殊字符開頭+數字+重復的字符 程序如下: Private Sub Command1_Click ( ?。?br />Dim src As String,t As String‘src保存輸入的字符串 Dim desc As String‘desc保存壓縮后的字符串 Dim c As String‘c保存特殊字符 Dim n As Integer‘n用來記連續重復字符個數 src=Text1.Text c=Text3.Text n=0 desc=①
For i=1To②
n=n+1 t=Mid(src,i,1) If t<>③
Then desc=desc & zipstring(n,c,t) n=0 End If Next i Text2.Text=desc & zipstring(n,c,④
) End Sub Private Function zipstring(n As Integer,c As String,sr As String) As String If n<=1Then zipstring=sr Else zipstring=c & Trim(Str(n)) & sr End If End Function ①
17.小麗在假期看到小朋友們在玩一個游戲,8個小朋友圍成一圈,從某個小朋友開始報數,報到指定數時,該小朋友出圈,接著從出圈的位置開始再接著報.她希望通過VB程序模擬這個過程,思路如下: (1)用一個一維數組來模擬,編號1~N保存在數據a(1)~a(n)中,來代表N個小朋友. (2)K代表報數的起始位置,從數組的a(k)開始遍列,報到m出圈,將當前位置的元素刪除,后面的元素依次往前移位.總數減1. (3)當報數報到數組元素的最后一個時,返回數組開頭接著報數. (4)當總數只剩下一個數時,直接輸出. 界面如下: Private Sub Command1_Click ( ?。?br />Dim i As Integer Dim n As Integer Dim m As Integer,k As Integer Dim A(1To 50)As Integer'存放編號的數組 n=Val(Text1.Text)'編號個數 k=Val(Text2.Text)'報數起始位 m=Val(Text3.Text)'報到出圈數 If n>0And k>0And m>0 (1)n<=50Then For i=1To n'初始化編號a(1)=1,a(2)=2,… A(i)=i Next i Label1.Caption=(2)'調用出圈函數,得到返回的出圈順序 Else MsgBox“編號、起始位、報到出圈數都必須大于0!編號不能超過50!“ End If End Sub Private Function chuquan(b As Integer,n As Integer,m As Integer,k As Integer) As String Dim i As Integer,j As Integer Dim s As String'出圈順序存放 i=k-1 s=“出圈順序為:“ Do While n>1 i=i+1 m=m-1 If(3)Then s=s+Str(b(i))+“,“ For j=i To n-1 b(j)=b(j+1) Next j b(j)=0 n=n-1 i=i-1 m=4 End If If i=n Then i=0 Loop chuquan=(4) End Function (1)