当前位置: 高中信息技术 / 综合题
  • 1. (2020高三上·宁波月考) 某日期加密授权码生成方法描述如下:

    1)授权码由10位字符组成,前8位为日期的密文,后2位为验证码;

    2)从右往左依次取日期的每一位字符,若该字符第一次出现,则直接取其对应的加密字符,否则取下一个不重复的加密字符。按此操作,依次取出该日期余下各位对应的加密字符;如日期为20201223,则依次取出的字符为“3、2、2、1、0、2、0、2”。

    3)求出所有日期字符数值的和,将和除16取余加1得到一位验证码字符;若和不小于16,则将和除16取整加1得到另一位验证码字符,否则另一位验证码字符为小写字母“x”。取出验证码重复时,处理规则与(2)相同。

    加密(验证码)字符对应表如下:

    值(十进制)

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    加密(验证码)字符

    A

    K

    p

    j

    L

    t

    W

    b

    m

    a

    P

    F

    Z

    q

    y

    c

    设计一个生成8位日期(YYYYMMDD格式)授权码的VB程序。程序功能如下:在文本框text1中输入一个8位有效日期,单击“授权码”按钮comand1,在标签label2中显示出该日期的授权码。运行效果如图所示。

    1. (1) 若输入的日期是“20210108”,则label2上显示内容为
    2. (2) 实现上述功能的VB程序段如下,请在划线处填入合适代码。

      Dim f(0 To 15)As Integer

      Const code = "AKpjLtWbmaPFZqyc"

      Private Sub Comand1_Click()

          Dim rq As String, sq As String

          Dim c As Integer, i As Integer, d As Integer

          For i = 0 To 15

              f(i)= 0

          Next i

          rq = Text1. Text

          sq="":d= 0

          If Len(rq) <> 8 Then

              Labe12. Caption ="请重新输入8位日期"

          Else

              For i = 1 To 8

      c = Val(Mid(rq,i,1))

                  d =d + c

                  sq =

              Next i

              If d >= 16 Then

                  yz = getchar(d Mod 16 + 1) + getchar(d \ 16 + 1)

              Else

                  yz = getchar(d Mod 16+ 1) + "x"

              End If

              Label2. Caption = sq + yz

          End If

      End Sub

      Function getchar(x As Integer) As String    '获取不重复的加密字符

          Dim flag As Boolean

          flag = False

          Do while flag = False

              f(x)=f(x)+ 1

              If f(x)= 1 Then

                  getchar =

                  f(x)=f(x)+ 1

                  flag = True

              Else

                  

              End If

          Loop

      End Function

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