填空题
本程序实现文本加密。先给定序列:a1,a2,…,an,它们的取值范围是1~n,且互不相同。加密算法是:把原文本中第k个字符放到加密后文本的第ak个位置处。若原文本长度大于n,则只对前n个字符加密,后面的字符不变;若原文本长度小于n,则在后面补字符“*”使文本长度为n 后再加密。 例如:若给定序列a1,a2,…a7却分别为2,5,3,7,6,1,4 当文本为“PROGRAM”时,加密后的文本为“APOMRRG” 当文本为“PROGKAMMING”时,加密后的文本为“APOMRRGMING” 当文本为“THANK”时,加密后的文本为“*TA*HKN” 下面的过程code实现这一算法。其中参数数组a()中存放给定序列(个数与数组a的元素个数相等)a(1,a2,a3,…的值,要加密的文本放在参数变量mystr中。过程执行完毕,加密后的文本仍放在变量mysar中。请填空。 Option Basel 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={{U}} 【14】 {{/U}}To UBound(a) c1=Mid(mystr,k,1) n={{U}} 【15】 {{/U}} Mid$(ch, n)=c1 Next k mystr=ch End Sub
1、
【正确答案】
1、[14]1
【答案解析】[15]a(k)
[知识点] 字符串的替换、过程的使用
[评析] String$(n,"*")返回的是n个*组成的字符串,当字符串的长度小于数组a中元素的个数时,在字符串后面补*号,使字符串与数组的长度相同。For循环中,将字符串中的字符交换位置,Option Base 1指定数组的下标从1开始,所以k的初值为1,因此第14空填1:当k=1时。c1是截取的是第一个字符,根据加密规则,它应放在a(1)中存放的数字指定的位置,即2,依次循环,所以n的值应该是数组a中的值,因此第15空填a(k)。