题目

LZW编码是一种自适应词典编码,通过建立一个字典,实现字符的编码。假设输入的字符串中仅有小写字母和空格,编码方法如下: 1)初始时,建立一个空字典,把26个小写字母加入字典中。26个小写英文字母编码为1-26,字母“a”的编码为1,字母“b”的编码为2,其它字母的编码依次增加。 2)从字符串第一个位置开始扫描,若遇到空格(空格用“*”表示),则得到一个单词,截取该单词并存入变量中。 3)若该单词在字典中,则取出该单词在字典中的编码值;否则,依次取出该单词中各字母在字典中的编码值,(编码值之间用一个空格分隔),同时产生该单词的编码(编码为字典中的最大编码值加1),加入字典中。 4)继续扫描字符串,截取单词,并按照步骤(3)的方法进行处理,直至整个字符串编码完毕。字符串“abab”LZW编码过程如图所示。 (1) 如果字符串为“ab bb bb”,则其LZW编码为。 (2) 请在划线处填入合适的代码。 Dim pos As Integer, a(1 To 100)As String Private Sub Form_Load( )     '将字母“a”至“z”依次存入数组元素a(1)到a(26) End Sub Function judge(ss As String) As Integer     '判断字典中是否有ss这个单词     Dim i As Integer judge = 0     For i = 27 To pos         If a(i) =Then judge = i         Exit For         End If     Next i End Function Private Sub Command1_Click( )     Dim s As String, i As Integer, j As Integer, k As Integer, ch As String, word As String, result As String, Dim id As Integer, idletter As Integer     s = Text1.Text pos = 26: i = 1     Do While i <= Len(s)         j = i         Do While Mid(s, j, 1) <> " " j = j + 1             If j > Len(s) Then Exit Do         Loop         word = Mid(s, i, j - i)         If Len(word) = 1 Then    '单个字母的单词             result = result + Str(Asc(word) -Asc("a") + 1)         Else             id = judge(word)             If id = 0 Then      '新的单词                 For k = 1 To Len(word)     '依次处理该单词中的各个字母编码                     ch = Mid(word, k, 1)                                      Next k                 pos = pos + 1     '对该单词编码                 a(pos) = word             Else         '词典中存在该单词                 result = result + Str(id) End If         End If         If j < Len(s) Then result = result + " *"             Loop     Text2.Text = result End Sub 答案: 【1】1 2 * 2 2 * 28 【1】ss【2】result=result+str(Asc(ch)-Asc(“a”)+1)或result=result+str(Asc(ch)-96)【3】i=j+1
信息技术 试题推荐
最近更新