某字符串加密算法,规则如下:
1)根据字符串长度构建一个最小的n*n矩阵,将字符串中每个字符从左到右,自上而下顺序填入矩阵,不足部分用字符“*”代替;
2)将矩阵转置(行列对换),然后将奇数行字母内码加上1,偶数行字母内码减1,字符为a、z或A、Z时做循环处理。比如,字符a减1为z;字符Z加1为A。
3)按从左到右,从上而下依次取出字符,形成新的字符串。如图a为字符串“Go to the zoo.”的加密过程。编写VB程序,在文本框Text1中输入字符串,点击“加密”按钮,在文本框Text2中输出加密后的字符串。程序运行结果如图b所示。
图a 图b
(1)
若在文本框Text1中输入3个字母“Far”,执行加密程序后,输出结果为。
(2)
实现上述功能的VB程序如下,请在划线处填入合适的代码
Dim
a(1 To 100) As String, b(1 To 100) As String, n As Integer
Private
Sub Command1_Click()
Dim s1 As String, s2 As String,i As Integer, j As
Integer, m As Single
s1 =
Text1.Text
m = Sqr(Len(s1))
If m
> Int(m) Then n = Int(m) + 1 Else n = m
For i = 1 To n * n
If i <= Len(s1) Then a(i) = Mid(s1, i, 1) Else
a(i) = "*"
Next
i
For i = 1 To n
For j = 1 To n
b((i -
1) * n + j) = ‘将矩阵转置
b((i - 1) * n + j) = jm(i, j) ‘内码变换
Next j
Next
i
s2 =
""
For i
= 1 To n * n
s2 = s2 & b(i)
Next
i
Text2.Text = s2
End
Sub
Function
jm(x As Integer, y As Integer) As String
Dim s As String
s = b((x - 1) * n + y)
If s <= "Z" And s >=
"A" Or s <= "z" And s >= "a" Then
If x Mod 2 <> 0 Then
If s <> "Z" And s <> "z"
Then
s = Chr(Asc(s) + 1)
Else
s = Chr(Asc(s) - 25)
End If
Else
If s
<> "a" And s <> "A" Then
s = Chr(Asc(s) - 1)
Else
s =
End If
End If
End
If
End
Function
答案: 【1】Gsz*
【1】a((j - 1) * n + i)【2】Chr(Asc(s) + 25)【3】jm = s