某日期加密授权码的生成方法如下:
①授权码由9位字符组成,前8位为日期的密文,最后1位为验证码;
②取日期各位的字符,若该字符第一次出现,则直接取其对应的加密字符,否则取下一个不重复的加密字符;
③求出所有日期字符数值的和,将和除16取余加1得到一位验证码字符,取得的验证码重复时,处理规则与②相同。
加密字符对应表如下:
值(十进制)
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
加密字符
K
n
G
j
L
t
W
b
O
a
P
H
Z
Q
Y
C
小李设计了一个生成8位日期(YYYYMMDD格式)授权码的VB程序,程序功能如下:在文本框Text1中输入一个8位有效日期,单击“生成”按钮Command1后,在标签Label2中显示该日期的授权码。运行界面如图所示。实现上述功能的VB程序如下。
(1)
若输入的日期为"19970601",则其授权码是。
(2)
请在画线处填入合适的代码。
Dim
f(0 To 15)As
Integer
Const
code ="KnGjLtWbOaPHZQYC"
Private
Sub Command1_Click( )
Dim
rq As String,sq As String
Dim c
As Integer,i As Integer,d As Integer
rq =
Textl.Text:sq=""
For i=
1 To 8
c=Val(Mid(rq,i,1))
d=d+c
sq= ①
Next i
yz
=GetChar(d Mod 16+1)
Text2.Text = sq + yz
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
②
f(x) =f(x) +1
flag=True
Else
x=(x+1) Mod 16
End If
Loop
End
Function
以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②。
答案: 【1】naPbKWGjL
【1】sq+GetChar(c)【2】GetChar = Mid(code,x+1,1)