当前位置: 高中信息技术 / 综合题
  • 1. (2020高三上·浙江月考) 给定一字符串(全部由小写字母组成),有n个字符(1≤n≤100),将每个字符存入到数组a中,有以下两种操作:

    操作1:在文本框中分别输入L,R,T(1≤L≤R≤n),对数组下标为L到R之内(包含L和R)的字符做相应的字符加密操作(1≤T≤100)。

    操作2:在文本框中输入M(1≤M≤n),在标签中输出a(M)的值。

    为了提高算法的效率,小明设计了如下算法,以n=10为例,将n个元素依次分成 段( 表示对 向下取整),每段的元素个数为 ,若最后有不足 个元素,则自成一段。给每段设置一个标记,如下表所示。

    ①对于操作1,若输入的L,R属于同一段,则直接对a(L to R)的每个元素的ASCII码进行后移T位的操作。如输入4,6,3,则第2段中的每个字符变为k,r,q,操作后如下表所示。

    ②对于操作1,若输入的L,R不属于同一段,则对元素a(L)所在段中从a(L)开始到该段最后一个元素为止的每个字符的ASCII码做后移T位的操作,并对元素a(R)所在段中从该段第一个元素开始到a(R)为止的每个字符的ASCII码做后移T位的操作,对a(L)元素所在段的下一段开始到a(R)元素所在段的上一段为止的每个段标记值增加T,这些段中的元素值保持不变。如在上表的基础_上再输入1,8,2,则第1段的3个字符和第3段中的前2个数都做相应的字符后移2位的操作,第2段的段标记值增加2,如下表所示。

    ③对于操作2,若输入M的值为4,则输出a(4)的值,若a(M)所在的段标记为奇数,a(M)的值为该数组元素的值,否则输出a(M)对应的大写字母的值,如a(4)=H。程序运行如下。请回答下列问题:

    1. (1) 若数组元素为“p,y,t,h,o,n,j,a,v,a”,依次进行以下3次操作后a(6)的值为

      操作1:在文本框Text1,Text2,Text3中依次输入1,8,3后,点击按钮Command1

      操作1:在文本框Text1,Text2,Text3中依次输入7,9,2后,点击按钮Command1

      操作2:在文本框Text4中输入6后,点击按钮Command2

    2. (2) 请在划线处填入合适的代码。

      Const n=10

      Dim a(1 To n)As String

      Dim dbj(1 To n)As Integer    ‘依次表示每段的标记值

      Dim bk As Integer       ‘表示每段的元素个数.

      Private Sub Form_Lond()

        bk = Int(Sqr(n))

        ‘读取数据,并存储到数组a中,代码略

        ‘读取数据,并存储到数组dbj中,代码略

      End Sub

      Function bl(x As Integer)As Integer   ‘bl函数返回数组元素a(x)的段编号

        bl=

      End Function

      Private Sub Command1_Click()

        Dim L Ax Integer, R As Integer, t As Integer

        L= Val(Text1.Text)

        R= Val(Text2.Text)

        t= Val(Text3.Texr)

        If bl(L)= bl(R) Then

          For i =L To R

            a(i)= Chr((Ase(a(i))- Ase("a")+t) Mod 26+97)

          Next i

        Else

          For i=L To bl(L)*bk

            a(i) = Chr((Ase(a(i))- Ase("a")+1) Mod 26+97)

        Next i

      For i= bl(L)+ 1 To bl(R)-1

        dbj(i) = dbj(i) + t

      Next i

      For i =

            a(i) = Chr((Ase(a(i))-Ase("a") + 1) Mod 26 + 97)

          Next i

        End If

        List1. AddItem Str(L) +"," + Str(R) + "," + Str(t) +“加密完成!”

      End Sub

      Private Sub Command2_Click( )

        Dim M As Integer

        Dim jg As Suring

        M= Val(Text4. Tex1)

        If dbj(bl(M)) Mod2 = 0 Then

          Jg=

        Else

          jg= a(M)

        End If

      Labell. Caption =“经过一 系列操作后. a(” + Str(M) +“)的值为:“+ ig

      End Sub

微信扫码预览、分享更方便