s = 0: x ="0123456789": i = 1
Do While i <= Len(x)
t = Val(Mid(x,i,2))
If t Mod 3 = 0 Then s = s + t
i = i + 1
Loop
执行该段程序后,s的值为( )
Private Sub Command1_Click( )
Dim s As String, t As String, n As Integer
Dim i As Integer, m As Integer
s = Text1.Text
n = Len(s)
For i = 1 To n
t = Mid(s,i,1)
If t >= "A" And t <= "Z" Then
m = ①
ElseIf t >= "a" And t <= "z" Then
m= m + Asc(t)- 96 ‘Asc(t)用于返回字符t的ASCII 码值
End If
Next i
For i = 2 To m - 1
If
Then Exit For
Next i
If ② Then
Label1.Caption = "It is a prime word."
Else
Label1.Caption = "It is not a prime word."
End If
End Sub
① ②
Private Sub Command1_Click()
Dim i As Integer, j As Integer, n As Integer
Dim zm As Integer, flag As Boolean, zf As string
Randomize ‘重置rnd函数,确保每次产生的随机数不一致
zf = ""
n = Val(Text1.Text)
For i = 1 To n
zm = Int(Rnd * 26 + 65)
For j = 1 To Len(zf) Step 2
If Asc(Mid(zf, j, 1)) = zm Then
flag = True
Exit For
End If
Next j
If flag = False Then zf = zf + Chr(zm) + ","
Next i
Text2.Text = zf
End Sub
Private Sub Command2_Click()
Dim i As Integer, zf As string
zf=Text2.Text
k = 1
For i = 3 To Len(zf) - 1 Step 2
If Mid(zf, k, 1) > Mid(zf, i, 1) Then k = i
Next i
List1.AddItem Mid(zf, k, 1)
Text2.Text =
End Sub
⑴确定初始右边界:从第1个字符开始,向右搜索到包含全部26个字母的子串,并因此而确定右边界,同时记录每个字母在子串中出现过的次数。
⑵调整子串左边界:若左边界有重复的字母则表明该子串可缩短,故左边可右移1位……直到找到一个符合条件的子串并记录,然后子串左边界再右移1位。
⑶调整子串右边界:子串右边界继续右移,在新子串符合条件后,记录并进行比较。
重复(2)各调整步骤,直至遍历完整个字符串,获得并输出满足条件的最小长度字符串。
实现上述功能的VB程序如下,请回答下列问题。
Const n = 300
Dim i As Integer, k As Integer, length As Integer, L As Integer
Dim pos As Integer, s1 As String, res As String
Dim f(1 To 26)As Integer '数组f记录每个小写英文字母的出现次数
Dim s(1 To n)As Integer '数组s记录每个输入字符在字母表中的位置
Private Sub Command1_Click()
res = ""
s1 = Text1.Text
For i = 1 To Len(s1)
s(i)= ①
Next i
k = 0: pos = 1: length = n
For i = 1 To 26
f(i)= 0
Next i
For i = 1 To Len(s1)
If f(s(i))= 0 Then k = k + 1
f(s(i))= f(s(i))+ 1 '调整右边界,直到达到26个字母
Do While ②
f(s(pos))= f(s(pos))- 1
If ③ Then
k = k - 1
If i - pos + 1 < length Then
length = i - pos + 1
res = Mid(s1, pos, length)
L = pos
End If
End If
pos = pos + 1
Loop
Next i
If res <> "" Then
Text2.Text = res
Label1.Caption = "最短长度:" + Str(length)+ "开始位置:" + Str(L)
Else
Label1.Caption = "无解!"
End If
End Sub
① ② ③
Private Sub Command1_Click()
Dim a(1 To 100) As String
Dim i As Integer, j As Integer, m As Integer, n As Integer
Dim ts As String, t As Integer, v As Integer
n = Val(Text1.Text)
v =
t = 1
For m = n To 1 Step -2
For i = 1 To m '向右方向填数
a(t + i - 1) = Chr(Asc("A") + v - 1)
v = v - 1
Next i
t = t + n - 1
For i = 1 To m - 1 '向下方向填数
a(m + t) = Chr(Asc("A") + v - 1)
v = v - 1
Next i
t = t - n
For i = m - 1 To 1 Step -1 '向左方向填数
a(t + i) = Chr(Asc("A") + v - 1)
v = v - 1
Next i
For i = m - 2 To 1 Step -1 '向上方向填数
a(t - n + 1) = Chr(Asc("A") + v - 1)
v = v - 1
t = t - n
Next i
t = t + 2
Next m
For i = 1 To n '在List1 中输出数组数据
ts = ""
For j =To i * n
ts = ts + " " + a(j)
Next j
List1.AddItem ts
Next i
End Sub
Dim dd(0 To 100) As Integer '记录所有订单的取件距离
Dim fp(0 To 100) As Integer '存储第x个快递员取件的最远距离
Dim xs(0 To 100) As String
Private Sub Command1_Click()
Dim n As Integer,i As Integer,k As Integer,s As String
Dim left As Integer,right As Integer,m As Integer
Dim x As Integer,r As Integer
Randomize
s = Text1.Text: n = 1: i = 1
Do While i <= Len(s)
k = i: ch = Mid(s, k, 1)
Do While
k = k + 1: ch = Mid(s,k,1)
Loop
dd(n) = Val(Mid(s,i,k - i))
i = k + 1: n = n + 1
Loop
x = 1: fp(x) = dd(1)
For i = 2 To n - 1
left = 1
right = x
Do While left <= right
m = (left + right) \ 2
If Then
right = m - 1
Else
left = m + 1
End If
Loop
fp(r) = dd(i)
If r = x + 1 Then x = x + 1
Next i
Label2.Caption = "第" + Str(i - 1) + "件快递将由第" + Str(r) + "号快递员收取"
'列表框List1中显示每位快递员的收取情况,代码略
End Sub
·将字符串(均为大写字符)s依次转换为相对应的数值(字符A~Z对应数值1~26);
·转换后的数值以K个数据为一段,将n个待处理的数据依次分割成若干段(最后一段不足部分用0来补充);
·每一段中K个数据与K*K转置矩阵进行乘法运算;
·将乘法运算得到的每一个结果值除以26求余数,依次转换成相应字符(数值1~26对应字符A~Z),最后按原始字符串长度输出。
乘法运算规则如下:
第i个元素c(i) =第j个元素a(j) * 转置矩阵第i行第j个元素b(t)的乘积之和(其中j = 1 , 2 …K)
例如:字符串s = PYTHON,区块大小K = 4的转置过程如下:
Private Sub Command1_Click()
Dim a(1 To 100) As Integer ‘存储字符串,长度不超过100个字符
Dim b(1 To 100) As Integer ‘存储转置矩阵,长度不超过10*10
Dim c(1 To 100) As Long
Dim s As String, tmp As String
Dim k As Integer, t As Integer, i As Integer, j As Integer
Dim n As Integer, m As Integer, lens As Integer
s = Text1.Text ‘在Text1中输入原始字符串
k = Val(Text2.Text) ‘在Text2中输入区块大小K
Randomize
For i = 1 To k ^ 2
b(i) = Int(Rnd * 9) + 1
tmp = tmp + Str(b(i))
If i Mod k = 0 Then
List2.AddItem tmp
tmp = ""
End If
Next i
lens = Len(s): n = lens
For i = 1 To n
tmp = Mid(s, i, 1)
List1.AddItem Str(a(i))
Next i
Do While n Mod k <> 0
n = n + 1
a(n) = 0
List1.AddItem Str(a(n))
Loop
For i = 1 To n
m = (i -1) Mod k + 1
t = 1
For j =
c(i) = a(j) * b((m -1)* k + t) + c(i)
t = t + 1
Next j
Next i
For i = 1 To n
List3.AddItem Str(c(i))
Next i
s = ""
For i = 1 To lens
s = s + Chr(t + 64)
Next i
Text3.Text = s ‘在Text3中输出转置后的字符串
End Sub
小王利用VB程序实现这一加密功能,程序界面和代码如下所示:
Private Sub Com_ jm_ Click()
Dim x As String, ch As String, cl As String
Dim sl As String, s2 As String, s As String
Dim i As Integer, n As Integer, y As Integer
x= Text1. Text
n=Len(x)
For i=1 To n
ch= Mid(x, i, 1)
If ch >= "0" And ch <= "9" Then
①
s2=s2 & y
Elself ch >="a" And ch<="z" Then
y=(Asc(ch)-Asc("a")+3)Mod 26
②
s1=c1+s1
Else
y=(Asc(ch)- Asc("A")+3) Mod 26
c2=Chr(Asc("A")+y)
s1=c2+s1
End If
Next i
③
Text2 Text=s
End sub
① ② ③
, 该公式正确的python表达式是( )
N1=InputBox(“请输入第一个数”)
N2=InputBox(“请输入第二个数”)
Print N1+N2
当输入分别为111和222是,程序输出为( )。
定义规则:你需要标记出所有空白格子周边相邻的格子上有多少地雷(在正方向和斜45度方向挨着的格子均可视为相邻),并将数量标记在空白格中,如下图所示。
实现上述功能的VB程序如下,请在划线处填入合适的代码。
Dim n As Integer,m As Integer 'n 存储地雷区域大小,m存储地雷数目
Dim a(1 To 100 * 100) As String
Dim b(1 To 100 * 100) As Integer
Private Sub Command1_Click() '按要求生成数组a中的数据并显示
Randomize
List1. Clear
n=9 : m=10
Dim s As String, pos As Integer, i As Integer
s=" " : n=n+2
For i=1 To n * n
If isinside(i) Then a(i)="— —"
Else a(i)="▲"
Next i
For i=1 To m
pos=Int(Rnd * n * n)+1
Do While a(pos)="★" Or
pos= Int(Rnd * n *n)+1
Loop
a(pos)="★"
Next i
For i=1 To n* n
s= s+" "+a(i)
If i Mod n=0 Then
List1. AddItem s
s=" "
End If
Next i
End Sub
Private Sub Command2_Click()
Dim i As Integer, j As Integer, row As Integer
Dim col As Integer, start As Integer, temp As String
For i=1 To n* n
If a(i)="★" Then
row=(i-1) \ n+1 : col=(i-1) Mod n+1
For j=1 To 3
start=
If a(start+col- 1)="— —" Then b
(start+ col- 1)= b(start+col- 1)+1
If a(start+col)="— —" Then
b(start+ col)= b(start+col)+1
If a(start+col+1)= "— —" Then b
(start+col+ 1)= b(start+ col+1)+1
Next j
End If
Next i
List2. Clear
For i=1 To n
temp=" "
For j=1 To n
If a((i-1) * n+j)="— —" Then
temp=temp+" "+ Str(b((i-1) * n+j))
Else
temp= temp+" "+a((i- 1)*n+j)
End If
Next j
List2. AddItem temp
Next i
End Sub
Function isinside(x As Integer) As Boolean
isinside= x>n And And x
Modn<;>1AndxMod<> 0
End Function
图b为标准ASCII码表供你参考(其中ASCII为1-32,127的字符为特殊符号,不能用作密码):
实现上述功能的VB程序代码如下,请回答以下问题:
Private Sub Command1_Click()
Dim t As Integer, flag as Boolean
Dim pwd as String ,n as Integer
Dim a(1 To 4) As Integer
flag= True
n=0
pwd=" "
Randomize
Do While flag
t= '随机生成33~126的ASCII码
pwd= pwd+Chr(t)
s= 0
For i=1 To 4
s=s+a(i)
Next i
n=n+1
If n>=6 And s=4 Then
Loop
Text1. Text= pwd
End Sub
'获取字符类型:1-小写字母,2-大写字母,3-阿拉伯数字,4-符号
Function check(x As Integer) As Integer
If x>=97 And x <= 122 Then
check= 1
ElseIf x >=65 And x <=90 Then
check= 2
ElseIf x>=48 And x <=57 Then
check= 3
Else
check= 4
End If
End Function
①H2? N64Aj
②[26wv9,Q
③$ 14G/uv④zX}rb! T&}d2

