主题:(急)09年3月二级VB的最后一题
题目如下:
本程序实现文本加密。先给定序列:a1, a2,…,an, `它们的取值范围是1~ n,且互不相同。加密算法是:把原文本中第k个字符放到加密后文木的第ak个位置处。若原文本长度大于n,则只对前n个字符加密,后面的字符不变:若原文本长度小于n,则在后面补字符“*”使文本长度为n后再加密。
例如:若给定序列a1,a2,…,a7分别为2,5,3,7,6,1,4
当文本为“PROGRAM”时,加密后的文本为“APOMRRG”
当文本为“PROGRAMMING”时,加密后的文本为“APOMRRGMING”
当文本为“THANK”时,加密后的文本为,“*TA*HKN”
下面的过程code实现这一算法。其中参数数组a()中存放给定序列(个数与数组a的元素个数相等)a1, a2, a3,…的值,要加密的文本放在参数变量mystr中。过程执行完毕,加密后的文本仍放在变量mystr中。请填空。
Option Base 1
Private Sub code(a() As Integer, mystr As String)
Dim ch As String, cl As String
n = UBound(a) - Len(mystr)
If n > 0 Then
mystr = mystr + String$(n, "*")
End If
ch = mystr
For k = [14] To UBound(a)
cl = Mid(mystr, k, 1)
n = [15]
Mid$(ch, n) = c1
Next k
mystr = ch
End Sub正确答案为:[14]:1 [15]:a(k)
但是我有好多不懂的地方:
1、 循环结构中的 Mid$(ch,n)=c1这条语句怎么能这样写?赋值语句的左边怎么能是一个函数呢?n定下来后,这个函数的值就能求出来了,也就是是一个常量了,c1如何赋值给一个常量?
2、如何调用这个子过程呀?我自己写了一个command1_click事件来调用它,好象不行。代码如下:
Private Sub Command1_Click()
Dim x(7) As Integer
Dim s As String
x(1) = 2
x(2) = 5
x(3) = 3
x(4) = 7
x(5) = 6
x(6) = 1
x(7) = 4
s = "PROGRAM"
Call code(x(), s)
Print "s=", s
End Sub
还请大家指正!谢谢![em18]
本程序实现文本加密。先给定序列:a1, a2,…,an, `它们的取值范围是1~ n,且互不相同。加密算法是:把原文本中第k个字符放到加密后文木的第ak个位置处。若原文本长度大于n,则只对前n个字符加密,后面的字符不变:若原文本长度小于n,则在后面补字符“*”使文本长度为n后再加密。
例如:若给定序列a1,a2,…,a7分别为2,5,3,7,6,1,4
当文本为“PROGRAM”时,加密后的文本为“APOMRRG”
当文本为“PROGRAMMING”时,加密后的文本为“APOMRRGMING”
当文本为“THANK”时,加密后的文本为,“*TA*HKN”
下面的过程code实现这一算法。其中参数数组a()中存放给定序列(个数与数组a的元素个数相等)a1, a2, a3,…的值,要加密的文本放在参数变量mystr中。过程执行完毕,加密后的文本仍放在变量mystr中。请填空。
Option Base 1
Private Sub code(a() As Integer, mystr As String)
Dim ch As String, cl As String
n = UBound(a) - Len(mystr)
If n > 0 Then
mystr = mystr + String$(n, "*")
End If
ch = mystr
For k = [14] To UBound(a)
cl = Mid(mystr, k, 1)
n = [15]
Mid$(ch, n) = c1
Next k
mystr = ch
End Sub正确答案为:[14]:1 [15]:a(k)
但是我有好多不懂的地方:
1、 循环结构中的 Mid$(ch,n)=c1这条语句怎么能这样写?赋值语句的左边怎么能是一个函数呢?n定下来后,这个函数的值就能求出来了,也就是是一个常量了,c1如何赋值给一个常量?
2、如何调用这个子过程呀?我自己写了一个command1_click事件来调用它,好象不行。代码如下:
Private Sub Command1_Click()
Dim x(7) As Integer
Dim s As String
x(1) = 2
x(2) = 5
x(3) = 3
x(4) = 7
x(5) = 6
x(6) = 1
x(7) = 4
s = "PROGRAM"
Call code(x(), s)
Print "s=", s
End Sub
还请大家指正!谢谢![em18]