实现上述功能的VB代码如下:
Dim a(1 To 100) As Integer Private Sub Command1_Click()
Dim i As Integer, s As Integer, smax As Integer ‘用于随机生成数据,并将阵列按规则在列表框中输出,该部分功能的代码略。
smax = 0
For i = 1 To 100
If a(i) = 0 Then s = search(i) If s > smax Then smax = s
Next i
Label1.Caption = "最大面积的矩形,占" + Str(smax) + "个单位。" End Sub
Function search(i As Integer) As Integer
Dim x As Integer, x1 As Integer, xend As Integer Dim y As Integer, y1 As Integer
Dim s As Integer
x = (i - 1) Mod 10 + 1 '起始列号 y = (i - 1) \ 10 + 1 '起始行号 x1 = x
y1 = y xend = 10
search = 0
Do While y1 <= 10
If a((y1 - 1) * 10 + x) = 1 Then Exit Do '判断 x1 = x
Do While x1 <= xend
If a((y1 - 1) * 10 + x1) = 1 Then
x1 = x1 – 1 '改错
Else
x1 = x1 + 1
End If Loop
y1 = y1 + 1
s = (x1 - x) * ( ) '填空 If s > search Then search = s
Loop
End Function
请回答下列问题:
Private Sub Command1_Click()
Dim n As Integer, m As Integer
n=2:m=0
Do While m < 3
n=n+2
If fun(n) Then
Print n
m=m+1
End If
Loop
End Sub
Function fun(x As Integer) As Boolean
fun=false
If x/2=Int(x/2) Then
fun=fun(x/2)
Else
If x=1 Then fun=True
End If
End Function
删数的算法如下:
⑴如果k>0,则从前往后检测相邻字符,否则,转(3);
⑵①若所有相邻字符都已非降序,则将串尾k个字符删去,k值置0,转(1);②若相邻两数存在逆序(即前一个数>后一个数),则将前一个数删除,k值变化,然后回到(1);
⑶去掉串首的0,输出结果。
按照上述算法思路,编写了VB程序,功能如下:在文本框Text1中输入数字串,在文本框Text2中输入删除的个数,单击“处理”按钮Command1,在文本框Text3中显示最小的整数。程序运行界面如下图所示。
delete函数说明:(delete st,x,y)为自定义函数,功能为在字符串st中删除x位置开始的y长度的子串。
Private Sub Command1_Click ()
Dim s As String, k As Integer
Dim i As Integer, j As Integer, n As Integer
s = Text1.Text
k = Val(Text2.Text)
n = Len(s)
Do While k>0
i=1
Do While i<n And
i=i+1
Loop
If i=n Then
n=n-k
k = 0
Else
s = delete(s, i, 1)
n=n-1
End If
Loop
i= 1
Do While n>1 And Mid(s,1,1)= “0”
s = delete(s,1 ,1)
i = i+1
n = n-1
Loop
Text3.Text = s
End Sub
Function delete(st As String,x As Integer,y As Integer) As String
delete=Mid(st,1,x-1)+Mid(st,x+y)
‘Mid函数第3个参数省略,则截去从开始位置向右到字符串结尾的所有字符
End Function

Private Sub Command1_Click()
Dim x As String, n As Integer, i As Integer
Dim k As Integer, start As Integer
Dim max As Integer
x = Text1.Text: n = Len(x)
max = 0: start = 1
For i = 1 To n
k = n
Do While k > i
IfAnd k - i + 1 > max Then
max = k - i + 1
start=i
End If
Loop
Next i
Label2.Caption =“最长回文字符串为” + Mid(x, start, max)
End Sub
Function isPa(t As String) As Boolean ’判断是不是回文数
Dim i As Integer
For i = 1 To Len(t) \ 2
If Mid(t, i, 1) <> Mid(t, Len(t) - i + 1, 1) Then isPa = False
Next i
End Function
Function delStr(S As String, m As Integer)As String Dim n As Integer
n= Len(s)
If m<1 Or m>n Then
delStr="输入位置有误!"
ElseIf m=1 Then
delStr=Mid(S, 2, n-1)
ElseIf m<n Then
①
ElseIf m=n Then
delStr=Mid(S, 1, n-1)
End If
End Function
则划线①处代码填写正确的是( )。
Private Function judge(t As Long)As Boolean
Dim s As String, s1 As String, i As Integer, j As Integer
s=Str(t): judge =False
For i =1 To Len(s)-1
s1 = Mid(s, i, 1)
For j =i+ 1 To Len(s)
If ① Then Exit Function
Next j
Next i
②
End Function
① ②
①将发送信息中的每一个字符的八位二进制取反
②第1、2、4、8位上插入4个二进制数,若取反后的八位二进制数中1的个数是偶数,插入的4个二进制是1、0、1、0,否则是0、1、0、1
③将12位二进制分为3段(4位一段),每一段的最后一个数字移动到最前面,并将移动后的4位二进制数抓换为十六进制数,转换后的3位十六进制数即是加密后的字符字符"A"的加密过程如下表所示:
|
原文“A”转换成8位二进制数取反 |
1 0 1 1 1 1 1 0 |
|
插入4位二进制数1、0、1、0 |
1 0 1 1 0 1 1 0 1 1 1 0 |
|
4位1段,最后一个数字移动到最前面 |
1101 0011 0111 |
|
转换为十六进制数,即密文 |
D37 |
按照上述规则,小明设计了一个加密的VB程序,程序功能如下:在Text1中输入待加密的字符,单击“加密”按钮,将加密后的字符显示在Text2中,程序运行界面如下图所示,请回答如下问题:

Private Sub Command1_Click()
Dim i As Integer, j As Integer, k As Integer Dim m As Integer, n As Integer, t As Integer Dim count As Integer
Dim a(1 To 12) As Integer
Dim mingw As String, miw As String
mingw = Text1.Text
For i = 1 To Len(mingw)
n = Asc(Mid(mingw, i, 1))
j = 8
Do While
a(j) = (n + 1) Mod 2 count = count + a(j)
n = n \ 2
j = j - 1 Loop
For k = 1 To 4
m = 8 + k - 1
Do While m >= 2 ^ (k - 1)
a(m + 1) = a(m)
m = m –1
Loop
Next k
For t = 1 To 3
miw =
Next t
Text2.Text = miw
Next i
End Sub
Function rev_btoh(b(i) As Integer, start As Integer, ending As Integer) As String
Dim i, sum As Integer
Const code = "0123456789ABCDEF"
sum = b(ending)
For i = start To ending - 1
sum = sum * 2 + b(i)
Next i
rev_btoh = Mid(code, sum + 1, 1)
End Function
程序要求如下:给定需要排序的数字(十进制混乱版本)和映射,返回按正确的十进制值升序排序的混乱数据,如果多个映射值相等,则返回的值按其显示的原始顺序。(采用插入排序算法实现:其基本思想是将整个数组分为左边有序和右边无序两个部分,每次取出无序部分的第一个元素,把它插入到有序部分的合适位置,直至所有的数据有序为止。)
例如,固定长度为10的映射{“3”,“5”,“4”,“6”,“2”,“7”,“9”,“8”,“0”,“1”}
和混乱的错误数据{“990”,“332”,“32”}
将“990”映射为“668”:
第一个数字为“9”。在映射数组中,9在位置6处,因此映射值得第一位是“6”。
第二个数字为“9”。在映射数组中,9在位置6处,因此映射值得第一位是“6”。
第三个数字为“0”。在映射数组中,0在位置8处,因此映射值得第一位是“8”。
按同样的方法,“332”映射为“004”,“32”映射为“04”。
“004”和“04”转换成整数都是4,按整数值排序会产生{4,4,668},而保留“332”和“32”的顺序会得到混乱数据为{“332”,“32”,“990”}。
程序VB代码如下:
Const m = 1000
Const n = 10
Dim mapping(1 To n) As String '存储映射数字
Dim nums1(1 To m) As String '存储现在的错误数据
Dim nums2(1 To m) As String '存储原始的正确数据
Private Sub Form_Load()
'读取系统中现在的错误数据存储在数组nums1中,并将数据添加到列表框list1,代码略
'读取映射数字存储在mapping数组中,代码略
End Sub
Private Sub Sort_Click()
Dim errornum As String
Dim rightnum As String
Dim i, j As Integer
Dim temp As String
Dim s As String
For i = 1 To m
nums2(i) = ""
For j = 1 To Len(nums1(i))
errornum = Mid(nums1(i), j, 1)
①
nums2(i) = nums2(i) + rightnum
Next j
Next i
'对原始正确数据进行升序插入排序
For i = 2 To m
temp = nums2(i): j = i - 1
Do While Val(temp) < Val(nums2(j))
nums2(j + 1) = nums2(j)
j = j - 1
If j = 0 Then Exit Do
Loop
②
Next i
For i = 1 To m
nums1(i) = ""
For j = 1 To Len(nums2(i))
nums1(i) = nums1(i) + ③
Next j
Next i
s = ""
For i = 1 To m
s = s + nums1(i)+ " "
Next i
List2.AddItem s
End Sub
'根据错误数字返回正确数字
Function match(x As String) As String
Dim i As Integer
For i = 1 To n
If mapping(i) = x Then Exit For
Next i
match = CStr(i - 1)
End Function
请回答下列问题:
① ② ③
def encrypt(code,key):
code_ new = " "
for s in code:
s1= 97 +((ord(s)-97)+key) % 26
code_ new + = chr(s1)
return code_ new
c = input('code=')
b = encrypt(c, 3)
print(b)
def enpwd(msg, key):
size = len(msg)
result= [ ]
for i in range(key):
t=i
while t<size:
result.append(msg[t])
t+=key
return".join(result)
msg = input('请输入待加密的明文:')
key = int(input('请输入密钥:'))
pwd = enpwd(msg, key)
print(pwd)
编写程序,实现接种序号发放的功能:运行程序,列表框List1中显示待安排接种人员信息(其中A32表示已经接种A类疫苗32天,B2表示已经接种B类疫苗2天,以此类推;F表示待接种第一针),在文本框Text1中输入可使用的疫苗情况(A-100代表有A类疫苗100剂),单击“序号发放”按钮Command1,在列表框List2中显示持接种序号人员信息。程序运行界面如图所示:
请回答下列问题:
Dim bh(1 to 2000)As Integer, yxj(1 to 2000) As Integer
Dim xm(1 to 2000) As String,qk(1 to 2000) As String
Dim num As Integer
Private Sub Form_Load()
'读取编号,优先级,姓名,接种情况分别存在bh,yxj,xm,qk 数组并输出到List1中
'接种总人数存入num,代码略
End Sub
Private Sub Command1_click( )
Dim s As String, p As String, x As String
Dim n As Integer, i As Integer, j As Integer, k As Integer, t As Integer
s = Text1.Text
p = Mid(s,1,1)
n = Val(Mid(s, 3, Len(s) - 2))
For i = 1 To n
For j = i + 1 To num
If
Then k= j
ElseIf check(qk(k), p) = True Or check(qk(j), p) = True Then
If yxj(k) > yxj(j) Then k = j
End If
Next j
If k<> i Then
t = bh(k): bh(k) = bh(i): bh(i) = t
t = yxj(k): yxj(k) = yxj(i): yxj(i) = t
x = xm(k): xm(k) = xm(i): xm(i) = x
x = qk(k): qk(k) = qk(i): qk(i) = x
End If
Next i
List2.AddItem "接种序号" + " " + "姓名"
For i = 1 To n
List2.AddItem " " + Str(i) + " " + xm(i)
Next i
End Sub
'check 函数用于判断是否符合该类疫苗的接种条件
Function check(ch As String, key As String) As Boolean
IfThen
check = True
Else
If Mid(ch, 1, 1) = key And Val(Mid(ch, 2, Len(ch) - 1)) > 30 Then check = True
Else
check = False
End If
End If
End Function
1)初始时,建立一个空字典,把26个小写字母加入字典中。26个小写英文字母编码为1-26,字母“a”的编码为1,字母“b”的编码为2,其它字母的编码依次增加。
2)从字符串第一个位置开始扫描,若遇到空格(空格用“*”表示),则得到一个单词,截取该单词并存入变量中。
3)若该单词在字典中,则取出该单词在字典中的编码值;否则,依次取出该单词中各字母在字典中的编码值,(编码值之间用一个空格分隔),同时产生该单词的编码(编码为字典中的最大编码值加1),加入字典中。
4)继续扫描字符串,截取单词,并按照步骤(3)的方法进行处理,直至整个字符串编码完毕。字符串“abab”LZW编码过程如图所示。
Dim pos As Integer, a(1 To 100)As String
Private Sub Form_Load( )
'将字母“a”至“z”依次存入数组元素a(1)到a(26)
End Sub
Function judge(ss As String) As Integer '判断字典中是否有ss这个单词
Dim i As Integer judge = 0
For i = 27 To pos
If a(i) =Then judge = i
Exit For
End If
Next i
End Function
Private Sub Command1_Click( )
Dim s As String, i As Integer, j As Integer, k As Integer, ch As String, word As String, result As String, Dim id As Integer, idletter As Integer
s = Text1.Text pos = 26: i = 1
Do While i <= Len(s)
j = i
Do While Mid(s, j, 1) <> " " j = j + 1
If j > Len(s) Then Exit Do
Loop
word = Mid(s, i, j - i)
If Len(word) = 1 Then '单个字母的单词
result = result + Str(Asc(word) -Asc("a") + 1)
Else
id = judge(word)
If id = 0 Then '新的单词
For k = 1 To Len(word) '依次处理该单词中的各个字母编码
ch = Mid(word, k, 1)
Next k
pos = pos + 1 '对该单词编码
a(pos) = word
Else '词典中存在该单词
result = result + Str(id) End If
End If
If j < Len(s) Then result = result + " *"
Loop
Text2.Text = result
End Sub
def chanageInt (number2) :
number2 = number2+1
print ("changeInt: number2=", number2)
#调用
Number1 = 2
chanageInt (number1)
print ("number:", number1)
打印结果哪项是正确的( )。
现要求根据输入的字符串(长度在1000 以内),全部由数字和字母组成,得到大小写不敏感压缩后的结果(即所有小写字母均视为相应的大写字母)。如:原字符串为aAABBbBCCCaaaaa,压缩后的结果(A,3)(B,4)(C,3)(A,5)。
实现这一功能的程序代码如下:
Private Sub Command1_Click()
Dim s As String, s1 As String
Dim tmp As String, ans As String
Dim i As Integer, j As Integer
s = Text1.Text
s1 = ""
For i = 1 To Len(s)
s1 = s1 & ToUpcase()
Next i
i = 1
Do While i <= Len(s1)
tmp = Mid(s1, i, 1)
ans = ans & "(" & tmp & ","
j = i + 1
Do While j <= Len(s1) And Mid(s1, j, 1) = tmp
j = j + 1
Loop
ans = ans && ")"
Loop
Text2.Text = ans
End Sub
Function ToUpcase(c As String) As String
If c >= "a" And c <= "z" Then
ToUpcase = Chr(Asc(c) - 32)
Else
ToUpcase = c
End If
End Function
在画线处填入适当的语句或表达式,将程序补充完整。

请回答下列问题:
Private Sub Count_Click()
Dim word(1 To 500) As String, num(1 To 500) As Integer
Dim s As String, c As String, tmp As String, t As Integer
Dim i As Integer, j As Integer, k As Integer, low As Integer, high As Integer
Dim m As Integer, n As Integer, b As Integer
For i = 1 To 500
num(i) = 0
Next i
s = Text1.Text : n = Len(s)
i = 1 : b = 1 : m = 0 : j = 0
Do While i <= n
c = Mid(s, i, 1)
If c >= "A" And c <= "Z" Or c >= "a" And c <= "z" Then
j = j + 1
Else
If j > 0 Then
tmp =
low = 1
high = m
Do While low <= high
t = (low + high) \ 2
If tmp = word(t) Then
Exit Do
If tmp < word(t) Then
high = t - 1
Else
low = t + 1
Loop
If Then
For k = m To low Step -1
word(k + 1) = word(k)
num(k + 1) = num(k)
Next k
num(low) = 1
m = m + 1
Else
num(t) = num(t) + 1
End If
j = 0
End If
b = i + 1
End If
i = i + 1
Loop
List1.Clear
For i = 1 To m
List1.AddItem word(i) + ":" + Str(num(i)) + "次"
Next i
End Sub
Function Lowcase(t As String) As String
Dim c As String, s As String, i As Integer
s = ""
For i = 1 To Len(t)
c = Mid(t, i, 1)
If c >= "A" And c <= "Z" Then s = s + Chr(Asc(c) + 32) Else s = s + c
Next i
End Function
要求s包括大写字母、小写字母、数字以及其它字符。请找出下面代码的两处错误( )
def check(s):
c=0
flag=[0]*4
for i in s:
if "0"<=i<="9": #①
flag[0]=1
elif 65<= ord(i)<=90:
flag[1]=1
elif 97<= ord(i)<=122:
flag[2]=1
else:
flag[3]=1
for j in range(4):
c=c+flag # ②
if c=4: #③
return True
return False #④
图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
比赛开始时参赛者将预先得到M元奖金。
比赛时间分为N个时间段(N≤100),有N个小游戏,每个时间段可完成1个游戏,第i个小游戏必须在规定期限t(i)时段前完成(1≤t(i)≤N),否则要从奖金M元中扣去奖金w(i),w(i)为自然数,不同的游戏扣去的奖金是不一样的。每个游戏必须从整时段开始。注意:比赛绝对不会让参赛者赔钱!
例如:当N=5,M=100时,
|
游戏编号 |
1 |
2 |
3 |
4 |
5 |
|
完成期限t(i) |
1 |
4 |
2 |
3 |
2 |
|
扣除奖金数w(i) |
5 |
4 |
10 |
8 |
7 |
在这种情况下,小炫依次完成编号为5、3、4、2、1的小游戏,获得了最高奖金95元。
他的算法思想:让扣款高的游戏尽量准时完成,扣除的奖金越少,则最后赢取的奖金越多。
1)按扣款数值从大到小排序,在样例中,排序后游戏编号依次为3、4、5、1、2;
2)对于游戏i,在时间段1到t(i)完成,效果都是一样的,所以尽量放置的时间段t(i)完成,若该时段已经被占用,则依次考察时间段t(i)-1,t(i)-2,……,1。在样例中,
①考虑游戏3,放置在时间段2完成(注:t(3)=2);
②考虑游戏4,放置在时间段3完成(注:t(4)=3);
③考虑游戏5,时间段2已被游戏3占用,放置在时间段1完成(注:t(5)-1=1);
④考虑游戏1,时间段1已被游戏5占用,不能按时完成,放到时间段5;
⑤考虑游戏2,放置在时间段4完成(注:t(2)=4)。
小炫按如上算法编写了一个VB程序,计算“智力大冲浪”游戏中玩家最多可赢取的奖金,将结果输出到文本框Text1中。
VB程序代码如下所示,请在划线处填入合适代码。
Dim n As Integer, m As Integer
Dim t (1 To 100)As Integer '变量t(i)表示第i个游戏的完成期限
Dim w (1 To 100) As Integer '变量w(i)表示第i个游戏未完成要扣除的奖金
Dim f (1 To 100)As Boolean '变量f(i)表示第i个时段是否已经被占用
Private Sub Form_ Load()
'初始化游戏设置信息,时段数量n、初始奖金数m、数组t、数组w
'代码略
End Sub
Sub swap(x As Integer, y As Integer) '自定义过程,可以用Call语句来调用该过程
Dim z As Integer
z=x:x=y:y=z
End Sub
Sub sort() '自定义过程,可以用Call语句来调用该过程
Dim x As Integer, i As Integer, j As Integer
For i=1 To n-1
For j=i+1 To n
If w(i)< w(j) Then
Call swap(w(i), w(j)) '调用自定义过程
End if
Next j
Next i
End Sub
Private Sub Command1_Click()
Dim i As Integer, k As Integer, p As Integer
Call sort '调用自定义过程
tot=0
For i=1 To n
f(i)= True
Next i
For i=1 To n '对每个游戏从该游戏的规定期限开始往左找可用时间段
'找到则完成该游戏,否则放弃该游戏
p=-1
k=t(i)
Do While k >0 And p=-1
If f(k)= True Then
p=k
f(k)= False
Else
End if
Loop
If p=-1 Then tot=tot +w(i)
Next i
Text1. text= str(ans)
End Sub
程序界面如图所示,左边列表框List1中显示同学的编号和姓名,单击“抽奖”按钮(Command1),在标签Label3 中显示抽中的编号,同时在标签Label4中显示“恭喜***同学”,其中具体同学的姓名从数组b中获取。
解决此问题的程序段如下:
Dim a(1 To 50) As Integer
Dim b(1 To 50) As String
Function search(m As Integer) As Integer
search= 0
For i=1 To 50
If m=a(i) Then
search=a(i)
End If
Next i
End Function
Private Sub Command1_ Click()
Dim c As Integer, t as integer
Randomize
①
Label3. Caption= Str(c)
t= search(c)
If t<>0 Then
Label4. Caption=“恭喜”+ ② +“同学”
End If
End Sub
Private Sub Form_ Load()
'此过程用于对数组a和数组b进行初始赋值,代码略
End Sub
① ②