试题

试题 试卷

logo

题型:综合题 题类:常考题 难易度:普通

浙江省临海市白云高级中学2019届高三下学期信息技术3月月考试卷

某数据加密方法描述如下:

先将字符转化为二进制的位数据并显示在文本框text2中,数据位数显示在标签Label1中以16个数据为一段,将k个待加密数据依次分割成若干个数据段,剩余数据(个数小于16)为独立数据段。

数据加密规则:

数据个数等于16的数据段,在段内进行位置变换,得到加密数据段。

数据个数小于16的数据段,直接得到加密数据段。

依次合并加密数据段,即为最后的加密数据。

位置变换的规制,方法如下:

具体界面如下图所示:

(1)、已知k=38,则数组元素b(26)对应值是数组a中的
(2)、实现该功能的VB程序如下:

Private Sub Command1_Click()

Dim a(1 To 1000) As Integer, b(1 To 1000) As Integer

Dim n As Integer, m As Integer

Dim s As String, s1 As String, c As Integer, ch As String

s = Text1.Text: Text2.Text = ""

n = Len(s)

k = 1

For i = 1 To n                  ‘获取字符的二进制数据存放在数组a()中

  n = Asc(Mid(s, i, 1))

  Do While n <> 0

   a(k) = n Mod 2

   n = n \ 2

   Text2.Text = Text2.Text + Str(a(k))

   k = k + 1

  Loop

Next i

              ①                   

List1.Clear

 

For m = 1 To (k - 1) \ 16    '对字符二进制按规则进行位变换,变换后的数据存放在数组b()中并输出

  For i = 1 To 4

    b(16 * (m - 1) + 4 * (i - 1) + 1) = a((m - 1) * 16 + i)

             ②              

  Next i

  For i = 1 To 3

    b(16 * (m - 1) + 4 * (i - 1) + 3) = a((m - 1) * 16 + 10 + i)

    b(16 * (m - 1) + 4 * (i - 1) + 2) = a((m - 1) * 16 + 17 - i)

  Next i

  For i = 1 To 2

    b(16 * (m - 1) + 13 + i) = a((m - 1) * 16 + 4 + i)

  Next i

  

 For i = 1 To 4

  s1 = ""

  For j = 1 To 4

  s1 = s1 + Str(b(16 * (m - 1) + (i - 1) * 4 + j))

  Next j

  List1.AddItem s1

  Next i

List1.AddItem ""

Next m

  

s1 = ""

For i = ((k - 1) \ 16) * 16 + 1 To k - 1

   b(i) = a(i)

    If          ③         Then

    s1 = s1 + Str(a(i))

    List1.AddItem s1

    s1 = ""

    Else

    s1 = s1 + Str(a(i))

    End If

Next i

List1.AddItem s1

 

Text3.Text = ""

For i = 1 To k - 1

Text3.Text = Text3.Text + Str(b(i))

Next i

End Sub

实现上述功能,请在划线处填入适当的代码:

程序中①处填入的是

程序中②处填入的是

程序中③处填入的是

举一反三
数组nam()、sex()、math()、su()分别存放学生的姓名、性别、数学和总分成绩,现要求编写一个程序使得数据按照男生“总分”的降序和女生“总分”的升序排列,其中男生在前女生在后,程序界面如下图所示:

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

Dim nam(100) As String '存放学生姓名

Dim sex(100) As String '存放学生性别

Dim math(100) As Long '存放学生数学成绩

Dim su(100) As Long '存放学生总分成绩

Dim k As Integer 'k变量用来存学生人数

Private Sub Form_Load()

‘将数据库中的数据分别存储在相应的变量中并在列表框中显示出来

‘代码略

End Sub

Private Sub Command1_Click()

Dim mmax As Integer, gmax As Integer, flagm As Boolean, flagg As Boolean

i = 1: flagm = True: flagg = True

Do While i <= k And flagm = True       ①   

    mmax = 0: gmax = 0

    flagm = False: flagg = False

  For j = i To k - i + 1

    If sex(j) = "男" And su(j) > su(mmax) Then mmax = j

    If sex(j) = "女" And su(j) > su(gmax) Then gmax = j

  Next j

   If mmax <> 0 Then

      flagm = True

      t = nam(mmax): nam(mmax) = nam(i): nam(i) = t

      t = sex(mmax): sex(mmax) = sex(i): sex(i) = t

      t = math(mmax): math(mmax) = math(i): math(i) = t

      t = su(mmax): su(mmax) = su(i): su(i) = t

   End If

   If gmax <> 0 Then

       flagg = True

       If j = mmax Then             ②   

        gmax = mmax

        t = nam(gmax): nam(gmax) = nam(k - i + 1): nam(k - i + 1) = t

        t = sex(gmax): sex(gmax) = sex(k - i + 1): sex(k - i + 1) = t

        t = math(gmax): math(gmax) = math(i): math(i) = t

        t = su(gmax): su(gmax) = su(k - i + 1): su(k - i + 1) = t

       Else

        t = nam(gmax): nam(gmax) = nam(k - i + 1): nam(k - i + 1) = t

        t = sex(gmax): sex(gmax) = sex(k - i + 1): sex(k - i + 1) = t

        t = math(gmax): math(gmax) = math(k - i + 1): math(k - i + 1) = t

        t = su(gmax): su(gmax) = su(k - i + 1): su(k - i + 1) = t

      End If

   End If

i = i + 1

Loop

For i = 1 To k

List2.AddItem nam(i) + "    " + sex(i) + "    " + Str(math(i)) + "    " + Str(su(i))

Next i

End Sub

程序中①处改为{#blank#}1{#/blank#}。

程序中②处改为{#blank#}2{#/blank#}。

返回首页

试题篮