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

浙江省杭州地区(含周边)重点中学2019学年高三上学期信息技术期中试题

作者UID:7189882
日期: 2024-04-28
期中考试
选择题(本大题共12小题,每小题2分,共24分。)
非选择题(本大题共4小题,4+8+7+7,共26分。)
  小张要对一批数据加密,数据内容全部由英文单词和空格组成(不包含数字和标点符号,数据最终以英文单词结尾,每个单词至少由两个字母组成)。加密时小张先从文本框中读取整段原文内容,然后对每个单词进行如下操作:每个单词中第一个和第二个字母交换位置,第三个字母按字母表顺序向后移动3 位,并后移到整个单词的最后面,其余字母前移,过程如图所示。例如:单词“Hazarded”,经过转换之后得到的密文是“aHardedc”。

代码和程序运行界面如下所示,请在划线处填入合适的代码,并且在加框处代码有错误,请改正:

 

Const n = 1000

Dim mw(0 To 1000) As String    '存放转换后密文的字符

Function zh(s As String) As String     '按字母表后移3位进行转换

    Dim p As Integer,flag As Boolean

    If s >= "a" And s <= "z" Then

        p = Asc(s) - 96: flag = True

    Else

        p = Asc(s) - 64: flag = False

    End If

       ①   

    If flag Then zh = Chr(p + 96) Else zh = Chr(p + 64)

End Function

Private Sub Command1_Click()

    Dim i As Integer, j As Integer, t As String, a As Integer

    Dim tmp As String, k As Integer, s As String

    s = Text1.Text

    k = 1: a = 1

    For i = 1 To Len(s)

    t = Mid(s, i, 1)

    If t = " " Then

        k = 0: mw(i) = t

    Else

        If k < 3 Then

            mw(i + a) = t: a = -a

        Else

            tmp = zh(t)

            j = i

            Do While

                  ②  

                j = j + 1

            Loop

            mw(j) = tmp

              ③   

        End If

    End If

    k = k + 1

    Next i

    For i = 1 To Len(s)

        Text2.Text = Text2.Text + mw(i)

    Next i

End Sub

请回答下列问题:

对k(k<=100)个数据进行排序时,可以利用一种排序方式进行处理,算法如下:

①每次将第i个数据和第2*i以及第2*i+1个位置的数据进行比较,将较大值交换到第i个位置上;

②从数组的第i(未排序数据个数一半位置)个位置重复步骤①一直比较到最前面,这样就可以将最大值交换到第1个位置;

③最终将1号位置上的值与未排序数据的最后一个进行交换,得到最大值;

④反复执行①②③三个步骤就可以将数据按升序排序;

过程如下图所示,其中a(1)=11,a(2)=25,a(3)=52,a(4)=39,a(5)=46,开始比较的位置从i=k\2个位置开始:

第一次排序过程:

步骤①:

步骤②:

步骤③:

第二次排序过程:

现要求在文本框Text1中输入一个整数k,对k个随机生成的两位奇数按上述排序方法进行排序,代码和程序运行界面如下所示,请在划线处填入合适的代码,并且在加框处代码有错误,请改正:

Dim a(1 To 100) As Integer

Dim k As Integer

Private Sub Command1_Click()

    Dim i As Integer

    k = Val(Text1.Text)

    Randomize

    For i = 1 To k

        a(i) =    ①   

        List1.AddItem Str(a(i))

    Next i

End Sub

Private Sub Command2_Click()

    Dim i As Integer, j As Integer, t As Integer, flag As Integer

    For i = 1 To k - 1

        For j = To 1 Step -1

            If Not judge(i, j) Then

                If     ②    Then

                    t = a(j): a(j) = a(2 * j): a(2 * j) = t

                Else

                    t = a(j): a(j) = a(2 * j + 1): a(2 * j + 1) = t

                End If

            End If

        Next j

        t = a(1): a(1) = a(k - i + 1): a(k - i + 1) = t

    Next i

    For i = 1 To k

        List2.AddItem Str(a(i))

    Next i

End Sub

Function judge(t As Integer, s As Integer) As Boolean

       ③    

    If a(s) > a(2 * s) And a(s) > a(2 * s + 1) Or a(s) > a(2 * s) And 2 * s > k - t Then

        judge = True

    End If

End Function

根据以上代码回答问题:

试卷列表
教育网站链接