试题

试题 试卷

logo

题型:综合题 题类:模拟题 难易度:困难

浙江省百校2021届高三下学期信息技术3月模拟联考试卷

在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan),以获得更好的压缩比。给定一个n×n的矩阵,Z字形扫描的过程如下图所示:

经过扫描后得到的数据结果为:

57

45

0

23

0

0

0

0

0

0

0

0

0

0

0

0

0

-30

1

0

0

0

0

0

-16

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

“57,45,0,0,0,0,23,0,-30,-16,0,0,1,0,0,0,0,…,0,0”,数据元素个数为64个。进一步经过压缩后,最终得到行程编码:“57, 1, 45, 1, 0, 4, 23, 1, 0, 1,-30, 1,-16, 1, 0, 2, 1, 1, 0, 51”,数据元素个数为20个。

(1)、行程编码压缩最坏情况下,数据压缩后数据元素的数量将是原来的倍。
(2)、根据上述扫描算法,其 VB 代码实现如下,请在划线处填入合适的代码。

Dim a(0 To 1000) As Integer     '存储原矩阵数据,按行优先存储

Dim b(0 To 1000) As Integer     '存储Z形扫描后数据

Dim c(0 To 1000) As Integer     '存储行程编码压缩后数据

Dim n As Integer

‘矩阵导入代码略,以行优先存储在a数组中,如例子中数据存储顺序为“57,45,0,23,0,0…”

Private Sub Command2_Click()

    Dim choice As Integer     ' 1:向右移动 ;2:向右上移动;3向下移动 4向左下移动

    Dim row As Integer, col As Integer, i As Integer, j As Integer

    Dim pre As Integer, count As Integer

    choice = 1: row = 0: col = 0: i = 0

    Do While (row <> n - 1 Or col <> n - 1)

        b(i) = a(row * n + col):i = i + 1     

        If choice = 1 Then

            

            If row = 0 Then choice = 4 Else choice = 2

        ElseIf choice = 2 Then

            row = row - 1: col = col + 1

            If  Then

                choice = 1

            ElseIf col = n - 1 Then

                choice = 3

            End If

        ElseIf choice = 3 Then

            row = row + 1

            If col = 0 Then choice = 2 Else choice = 4

            ElseIf choice = 4 Then

                row = row + 1: col = col - 1

            If row = n - 1 Then

                choice = 1

            ElseIf col = 0 Then

                choice = 3

            End If

        End If

    Loop

    b(i) = a(n * n - 1):j = 0: pre = b(0): count = 0

    For i = 0 To n * n - 1                 '输出Z形序列,并进行行程压缩

        If pre = b(i) Then

            count = count + 1

        Else

            c(j) = pre: c(j + 1) = count

            

            pre = b(i):j = j + 2

        End If

    Next i

    c(j) = pre: c(j + 1) = count

    Text1.Text = ""

    For i = 0 To j + 1

        Text1.Text = Text1.Text + Str(c(i)) + ","

    Next i

End Sub

举一反三
某仓库物品代码格式为“X-XXX-XXXXX-Y”,其中“X”和“Y”均为0到9之间的数字,“Y”为校验码。校验码由前面9个X计算得到,计算方法为:从左边开始,第1个数字乘以1加上第2个数字乘以2……依此类推,直到加上第9个数字乘以9,将该结果除以10,所得余数即为校验码。

小吴设计一个根据校验码校验物品代码的VB程序,功能如下:在文本框Text1中输入物品代码,单击“校验”按钮Command1,如果输入的校验码与计算所得的校验码一致,则输出“校验通过。”(如下左图所示),否则输出“校验不通过!”(如下右图所示)。

实现上述功能的VB程序如下,加框处代码有错,请改正。

Dim s As String           '用于存储输入的物品代码

Dim t As String

Dim i As Integer, j As Integer

Dim sum As Integer           '用于存储计算校验码的累加和

Dim check_old As Integer             '用于存储输入物品代码中的校验码Y

Dim check_new As Integer            '用于存储按照前面9个数字X计算所得的新校验码

Dim a(1 To 10)As Integer

Private Sub Command1_Click()

    '从物品代码中取出9个数字X依次存储到a(1)到a(9)中,取出校验码Y存储到a(10)中

    s= Text     ①

    j=0

    For i=1 To 13

        t=Mid(s, i, 1)

        If(t>="0")And(t<="9") Then

            j=j+1

            a(j)=Val(t)

        End If

    Next i

    '计算新的校验码并和输入的校验码进行比较

    sum=0

    For i=1 To 9

        sum=sum+       ②

    Next i

    check_new=    ③

    check_old=a(10)

    If check_old=check_new Then

        Label1.Caption="校验通过。"

    Else

        Label1.Caption="校验不通过! "

    End If

End Sub

①{#blank#}1{#/blank#} ②{#blank#}2{#/blank#} ③{#blank#}3{#/blank#} 

返回首页

试题篮