组卷题库 > 高中信息技术试卷库

2017年浙江省高考信息技术模拟试题(二)

作者UID:6286416
日期: 2024-12-23
高考模拟
选择题
非选择题
有一种压缩算法,基本原理是:特殊字符+重复次数+字符。
比如有文本字符串:A A A A A B C C C C B C C C,编码后得到:B B 5 A B B 4 C B B 3 C。编码串的最开始说明特殊字符B,以后B后面跟着的数字就表示出重复的次数。编程实现将从Text1输入的一个字符串,点压缩按钮后用上述方法压缩,压缩后的编码在Text2中输出,text3中输入特殊字符。压缩算法:
a)       给压缩串添加开关的特殊字符
b)      逐个判断输入字符串的字符(当前的字符与后一个比较),如果两个字符不同,则连到了压缩串中,如果有连续的重复字符则计数n+1
c)       最后一组重复字符或单个字符再连到压缩串中。
u  连入压缩串方法:单个的直接连入,有重复的连入特殊字符开头+数字+重复的字符

图1
程序如下:
Private Sub Command1_Click()
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 = 1 To      ②  
    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 <= 1 Then
            zipstring = sr
         Else
            zipstring = c & Trim(Str(n)) & sr
         End If
End Function



小丽在假期看到小朋友们在玩一个游戏,8个小朋友围成一圈,从某个小朋友开始报数,报到指定数时,该小朋友出圈,接着从出圈的位置开始再接着报。她希望通过VB程序模拟这个过程,思路如下:

1)用一个一维数组来模拟,编号1~N保存在数据a(1)~a(n)中,来代表N个小朋友。

2)K代表报数的起始位置,从数组的a(k)开始遍列,报到m出圈,将当前位置的元素删除,后面的元素依次往前移位。总数减1。

3)当报数报到数组元素的最后一个时,返回数组开头接着报数。

4)当总数只剩下一个数时,直接输出。

界面如下:

Private Sub Command1_Click(   )

Dim i As Integer

Dim n As Integer

Dim m As Integer, k As Integer

Dim A(1 To 50) As Integer   '存放编号的数组

n = Val(Text1.Text)                       '编号个数

k = Val(Text2.Text)                '报数起始位

m = Val(Text3.Text)                   '报到出圈数

If n > 0 And k > 0 And m > 0   ①  n <= 50 Then

    For i = 1 To n              '初始化编号a(1)=1,a(2)=2,……

         A(i) = i

    Next i

    Label1.Caption =    ②         '调用出圈函数,得到返回的出圈顺序

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

End Function

试卷列表
教育网站链接