
实现上述功能的VB程序代码如下,请在划线处填上合适的代码。
Dim a( 1 To 20) As Integer
Private Sub Command1_Click ( )
Dim key As Integer
key = ①
i = 1
Do While key > a ( i ) And ( i <= 1 5 )
i = i + 1
Loop
Label4.Caption = “该数插入的位置是:” + Str ( i )
If i = 16 Then
a ( i ) = key
Else
For j = 16 To i + 1 Step -1
②
Next j
a ( i ) = key
End If
List2. Clear
For i = 1 To 16
List2.AddItem a( i)
Next i
End Sub
Private Sub Form_Load( )
'随机生成15个200以内的正整数
Randomize
For i = 1 To 15
a ( i ) = Int(Rnd * 200) + 1
Next i
'将15个数从小到大排序
For i = 1 To 14
k = i
For j = i + 1 To 15
If a ( k ) > a ( j ) Then k = j
Next j
If i <>k Then
t = a(i); a( i) = a ( k ):a ( k )
End If
Next i
'将排好序的数输出在列表框Listl中
Listl.Clear
For i = 1 To 15
Listl.AddItem str ( a ( i ) )
Next i
End Sub
程序中①划线处应填入,程序中②划线处应填入
1)用一个一维数组来模拟,编号1~N保存在数据a(1)~a(n)中,来代表N个小朋友。
2)K代表报数的起始位置,从数组的a(k)开始遍列,报到m出圈,将当前位置的元素删除,后面的元素依次往前移位。总数减1。
3)当报数报到数组元素的最后一个时,返回数组开头接着报数。
4)当总数只剩下一个数时,直接输出。
界面如下:

Private Sub Command1_Click( )
Dim i As Integer
Dim n As Integer
Dim m As Integer, k As Integer
Dim A(1 To 50) As Integer '存放编号的数组
n = Val(Text1.Text) '编号个数
k = Val(Text2.Text) '报数起始位
m = Val(Text3.Text) '报到出圈数
If n > 0 And k > 0 And m > 0 ① n <= 50 Then
For i = 1 To n '初始化编号a(1)=1,a(2)=2,……
A(i) = i
Next i
Label1.Caption = ② '调用出圈函数,得到返回的出圈顺序
Else
MsgBox "编号、起始位、报到出圈数都必须大于0!编号不能超过50!"
End If
End Sub
Private Function chuquan(b() As Integer, n As Integer, m As Integer, k As Integer) As String
Dim i As Integer, j As Integer
Dim s As String '出圈顺序存放
i = k - 1
s = "出圈顺序为:"
Do While n > 1
i = i + 1
m = m - 1
If ③ Then
s = s + Str(b(i)) + ","
For j = i To n - 1
b(j) = b(j + 1)
Next j
b(j) = 0
n = n - 1
i = i - 1
m = 4
End If
If i = n Then i = 0
Loop
chuquan = ④
End Function
①
②
③
④
写成Visual Basic表达式,正确的是( )
a=4
b=7
a=a+b
b=a+b
Private Sub Command1_Click()
Dim r As Integer, k1 As Integer, k2 As Integer
Dim s As String, n As Integer
‘从文本框TxtIn 中获取字符串
Randomize
r = Int(Rnd() * 10) + 1 ‘随机生成洗牌次数
n = Len(s)
Do While r >= 1 ‘洗牌操作
k1 = Int(Rnd() * (n - 2)) + 2
k2 = Int(Rnd() * (n - k1 + 1)) + k1
s = + Mid(s, 1, k1 - 1) + Mid(s, k2 + 1, n - k2)
r = r - 1
Loop
= s ‘输出结果
End Sub
删数的算法如下:
⑴如果k>0,则从前往后检测相邻字符,否则,转⑶;
⑵①若所有相邻字符都已非降序,则将串尾k个字符删去,k值置0,转⑴;
②若相邻两数存在逆序(即前一个数>后一个数),则将前一个数删除,k值变化,然后回到⑴;
⑶去掉串首的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, 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
'mid 函数第3个参数省略,则截取从开始位置向右到字符串结尾的所有字符
delete = Mid(st, 1, x - 1) + Mid(st, x + y)
End Function
Dim c As Integer,a(0 To 5) As Integer
For i = 1 To 5
a(i) = i
Next i
c = 0
For i = 1 To 5
x = Int(Rnd * 5 + 1)
If a(x Mod 5) = i + 2 Then c = c + 1
If c = x Then Exit For
i = i - 1
Next i
运行该程序后,变量c的值不可能是( )

Private Sub Command1_Click()
Dim a(1 To 100)As String, s As String, ch As String, word
As String
Dim i As Integer,j As Integer,k As Integer, numb As Integer
s=Text1.Text:k=0:word=" "
For i=1 To Len(s)
ch=Mid(s,i,1)
If ch>="a"And ch<="z"Оr ch>="A"And ch<="Z"Then
If ch>="A" And ch<="Z"Then ①
word=word+ch
Else
flag=False
For j=1 To k
If a(j)=word Then flag=True
Next j
If Not flag And word<> ''Then
②
a(k)=word
numb=numb+1
End If
③
End If
Next i
Text2.Text=Str(numb)
End Sub
①②③
Dim s As String, c As String
Dim i As Integer, n As Integer, p As Integer
s = Text1.Text
n = Len(s)
p = 1
For i = 1 To n
c = Mid(s, i, 1)
If c >= "A" And c <= "Z" Then
t = c + t
Else
t = Mid(t, 1, p - 1) + c + Mid(t, p, Len(t) - p + 1)
p = p + 1
End If
Next i
Text2.Text = t
如果文本框Text1中输入“ABCD@1234”,则文本框Text2中输出( )