方格填数。在n个连续的方格内填写字母A或B但相邻两格内不能都填B。求所有可能的填写方案数。例如,n=3,可能的方案有AAA、AAB、ABA、BAA、BAB等5种
以下VB程序用于解决这个问题,在文本框Text1输入n的值,点击“求解”按钮 command1后,在列表框List1中输出所有方案。运行界面如下图所示:
提示:若用0代表A,用1代表B,那么每一种方案都对应一个n位的二进制数。

(1)要使command1按钮上显示的文本改为“求解”,可在其属性窗口中将_____(填属性名)属性的属性值改为“求解”。
实现上述功能的程序如下:
Private Sub Command1_Click ()
m =i
For j=1 To n
a(j)= m Mod 2
③
Next j
flag =True
For
If a(k-1)= a(k) And a(k)= 1 Then
flag = False
End IF
Next k
If flag Then
For k= 1 To n
If a (k) = 1 Then s = "B" + s Else s = "A" + s
Next k
List1. AddItem s
End If
s = ""
(2)阅读代码,变量flag的数据类型应定义为_____
(3)加框处代码有错,请改正:__________
(4)请在划线处填入合适的代码:
①__________
②__________
③__________
以下VB程序用于解决这个问题,在文本框Text1输入n的值,点击“求解”按钮 command1后,在列表框List1中输出所有方案。运行界面如下图所示:
提示:若用0代表A,用1代表B,那么每一种方案都对应一个n位的二进制数。

(1)要使command1按钮上显示的文本改为“求解”,可在其属性窗口中将_____(填属性名)属性的属性值改为“求解”。
实现上述功能的程序如下:
Private Sub Command1_Click ()
Dim n As Integer, m As Integer, k As Integer
Dim flag As **
Dim i As Integer, j As Integer
Dim a(1 To 1000) As Integer
①
List1. Clear '清空文本框list1
s = ""
For i =0 To ②
'每一种方案对应一个n位的二进制数,枚举i对应的方案是否符合要求m =i
For j=1 To n
a(j)= m Mod 2
③
Next j
flag =True
For

If a(k-1)= a(k) And a(k)= 1 Then
flag = False
End IF
Next k
If flag Then
For k= 1 To n
If a (k) = 1 Then s = "B" + s Else s = "A" + s
Next k
List1. AddItem s
End If
s = ""
Next i
End Sub(2)阅读代码,变量flag的数据类型应定义为_____
(3)加框处代码有错,请改正:__________
(4)请在划线处填入合适的代码:
①__________
②__________
③__________
分析解决问题。
有一张单据,编号为四位数,号码为:8□□0.中间两位被污浊看不出来。已知该单据能被23和37整除,请用编程求出该单据号码。
(算法设计)
设百位数字为x,十位数字为y;x和y的范围都是0到9。
4位数:8xy0=8*1000+x*100+y*10
列举()()里的两个数字的所有可能情况:
00,01,02,03,04,05,06,07,08,09
10,11,12,13,14,15,16,17,18,19
……
90,91,92,93,94,95,96,97,98,99
逐一判断找出符合条件的数字。
(参考代码)
Dim x as long
Dim y as long
Dim n as long
For x=0 to 9
For y=0 to 9
n=8*1000+x*100+y*10
If then
Print n
End if
Next y
Next x
根据上述回答下列问题
(1)解决该问题采用的算法是:___________(填:解析法/穷举法/排序法/递归法)
(2)根据题意,程序中空白处应填写:______(填写字母:A/B/C/D)
(3)根据算法设计,参考程序中循环体中的语句“n=s*1000+x*100+y*10”,一共重复执行了_________次。
有一张单据,编号为四位数,号码为:8□□0.中间两位被污浊看不出来。已知该单据能被23和37整除,请用编程求出该单据号码。
(算法设计)
设百位数字为x,十位数字为y;x和y的范围都是0到9。
4位数:8xy0=8*1000+x*100+y*10
列举()()里的两个数字的所有可能情况:
00,01,02,03,04,05,06,07,08,09
10,11,12,13,14,15,16,17,18,19
……
90,91,92,93,94,95,96,97,98,99
逐一判断找出符合条件的数字。
(参考代码)
Dim x as long
Dim y as long
Dim n as long
For x=0 to 9
For y=0 to 9
n=8*1000+x*100+y*10
If then
Print n
End if
Next y
Next x
根据上述回答下列问题
(1)解决该问题采用的算法是:___________(填:解析法/穷举法/排序法/递归法)
(2)根据题意,程序中空白处应填写:______(填写字母:A/B/C/D)
A.n mod 23 =0 or n mod 37 =0 |
B.n\23=0 and n\37=0 |
C.n\23=0 or n\37=0 |
D.n mod 23 =0 and n mod 37 =0 |
某数据加密方法描述如下:先将字符转化为二进制的数据并显示在文本框Text2中,数据位数显示在标签Label1中。以16个数据为一段,将k个待加密数据依次分割成若干个数据段,剩余数据(个数小于16)为独立数据段。数据加密规则:数据个数等于16的数据段,在段内进行位置变换,得到加密数据段。数据个数小于16的数据段,直接得到加密数据段。依次合并加密数据段,即为最后的加密数据。位置变换的规
则如下:

具体界面如图所示:

请回答下列问题:
(1)已知k=34,则数组元素b(26)对应的值是数组a的_______________。
(2)为实现上述功能,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim a (1 To 1000) As Integer, b (1 To 1000)
As Integer
Dim n As Integer, m As Integer
Dim s As String, s1 As String, c As Integer,
ch As String
s = Text1.Text: Text2.Text = ""
n = Len(s)
k = 1
For i = 1 To n '获取字符的二进制数据存放在数组a 中
n = Asc(Mid(s, i, 1))
Do While n <> 0
a(k) = n Mod 2
n = n \2
Text2.Text = Text2.Text + Str(a(k))
k = k + 1
Loop
Next i
__________
List1.Clear
'对字符二进制按规则进行位变换,变换后的数据存放
在数组 b 中并输出
For m = 1 To (k - 1) \16
For i = 1 To 4
b(16 ∗ (m - 1) + 4 ∗ (i - 1) + 1) = a((m- 1) ∗ 16 + i)
___________
Next i
For i = 1 To 3
b(16 ∗ (m - 1) + 4 ∗ (i - 1) + 3) = a((m- 1) ∗ 16 + 10 + i)
b(16 ∗ (m - 1) + 4 ∗ (i - 1) + 2) = a((m- 1) ∗ 16 + 17 - i)
Next i
For i = 1 To 2
b(16 ∗ (m - 1) + 13 + i) = a((m - 1) ∗16 + 4 + i)
Next i
For i = 1 To 4
s1 = ""
For j = 1 To 4
s1 = s1 + Str(b(16 ∗ (m - 1) + (i -1) ∗ 4 + j))
Next j
List1.AddItem s1
Next i
List1.AddItem ""
Next m
s1 = ""
For i = ((k - 1) \16) ∗ 16 + 1 To k - 1
b(i) = a(i)
If _______________ then
s1= s1 + Str(a(i))
List1.AddItem s1
s1 = ""
Else
s1 = s1 + Str(a(i))
End If
Next i
List1.AddItem s1
Text3.Text = ""
For i = 1 To k- 1
Text3.Text = Text3.Text + Str(b(i))
Next i
End Sub
则如下:

具体界面如图所示:

请回答下列问题:
(1)已知k=34,则数组元素b(26)对应的值是数组a的_______________。
(2)为实现上述功能,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim a (1 To 1000) As Integer, b (1 To 1000)
As Integer
Dim n As Integer, m As Integer
Dim s As String, s1 As String, c As Integer,
ch As String
s = Text1.Text: Text2.Text = ""
n = Len(s)
k = 1
For i = 1 To n '获取字符的二进制数据存放在数组a 中
n = Asc(Mid(s, i, 1))
Do While n <> 0
a(k) = n Mod 2
n = n \2
Text2.Text = Text2.Text + Str(a(k))
k = k + 1
Loop
Next i
__________
List1.Clear
'对字符二进制按规则进行位变换,变换后的数据存放
在数组 b 中并输出
For m = 1 To (k - 1) \16
For i = 1 To 4
b(16 ∗ (m - 1) + 4 ∗ (i - 1) + 1) = a((m- 1) ∗ 16 + i)
___________
Next i
For i = 1 To 3
b(16 ∗ (m - 1) + 4 ∗ (i - 1) + 3) = a((m- 1) ∗ 16 + 10 + i)
b(16 ∗ (m - 1) + 4 ∗ (i - 1) + 2) = a((m- 1) ∗ 16 + 17 - i)
Next i
For i = 1 To 2
b(16 ∗ (m - 1) + 13 + i) = a((m - 1) ∗16 + 4 + i)
Next i
For i = 1 To 4
s1 = ""
For j = 1 To 4
s1 = s1 + Str(b(16 ∗ (m - 1) + (i -1) ∗ 4 + j))
Next j
List1.AddItem s1
Next i
List1.AddItem ""
Next m
s1 = ""
For i = ((k - 1) \16) ∗ 16 + 1 To k - 1
b(i) = a(i)
If _______________ then
s1= s1 + Str(a(i))
List1.AddItem s1
s1 = ""
Else
s1 = s1 + Str(a(i))
End If
Next i
List1.AddItem s1
Text3.Text = ""
For i = 1 To k- 1
Text3.Text = Text3.Text + Str(b(i))
Next i
End Sub
小王设计制作了一个VB程序用于获取英文单词,然后背诵这些英文单词。为了使背诵英文单词更有效率,小王决定要显示的英文单词要由相同的英文字幕组成。
程序执行过程如下:程序运行后,先从数据库中获取单词,然后单击“分析单词”按钮,查找出由相回字母组成的英多单词保留下来显示,例如:获取的英文单词有:tea,pea,eta,eat,help,three,there。通过分析得知tea,eta和eat是由相同字母组成的英文单词,three和there是由相同字母组成的英文单词,则这五个英文单词保留下来,显示在label1中。如图所示:

VB部分程序如下,请将程序补充完整:
Dim wordcharsort (1 To 3000)As String'存储每个英文单词字母排序后的内容
Dim words (1 To 3000) As string'存储由相同字母组成的英文单词
Dim wordscount As Integer
Dim Getwords (1 To 3000) As String
Private Sub Form_Load()
'从数据库中获取3000个英文单词存储到数组 Getwords中,代码略
End Sub
Private Sub Command1_ Click()
For j=i+1 To 3000
If wordcharsort(j)<wordcharsort(k) Then k=j
Next j
If i<>k Then
t1= wordcharsort(i):wordcharsort(i)= wordcharsort(k):wordcharsort(k)=tl
___________
End if
Next i
For key=1 To 3000
wordscount= search( wordcharsort(key),key, wordscount)
Next key
For i=1 To wordscount
Label1. Caption= Labell. Caption+" "+words(i)
Next i
End sub
'查找相同字母组成的英文单词,存储在 words数组中
Function search(a As String, b As Integer, c As Integer)As Integer
For j=1 To c
If words(j)=Getwords(b) Then flag=True
Next j
If flag=False Then
Words(c)=Getwords(b)
__________
End if
End If
Next i
search=c
End function
'对英文单词中的字母进行排序
Function rank(s As String)As String
tmp=c(kk):c(kk)=c(kk-1):c(kk-1)=tmp
End if
Next kk
Next k
For j=1 To Len(s)
rank -rank & c(i)
Next j
End function
程序执行过程如下:程序运行后,先从数据库中获取单词,然后单击“分析单词”按钮,查找出由相回字母组成的英多单词保留下来显示,例如:获取的英文单词有:tea,pea,eta,eat,help,three,there。通过分析得知tea,eta和eat是由相同字母组成的英文单词,three和there是由相同字母组成的英文单词,则这五个英文单词保留下来,显示在label1中。如图所示:

VB部分程序如下,请将程序补充完整:
Dim wordcharsort (1 To 3000)As String'存储每个英文单词字母排序后的内容
Dim words (1 To 3000) As string'存储由相同字母组成的英文单词
Dim wordscount As Integer
Dim Getwords (1 To 3000) As String
Private Sub Form_Load()
'从数据库中获取3000个英文单词存储到数组 Getwords中,代码略
End Sub
Private Sub Command1_ Click()
Dim key As Integer
For i=1 To 3000
Wordcharsort(i)=rank(Getwords(i))Next i
For i=1 To 3000-1
k=iFor j=i+1 To 3000
If wordcharsort(j)<wordcharsort(k) Then k=j
Next j
If i<>k Then
t1= wordcharsort(i):wordcharsort(i)= wordcharsort(k):wordcharsort(k)=tl
___________
End if
Next i
For key=1 To 3000
wordscount= search( wordcharsort(key),key, wordscount)
Next key
For i=1 To wordscount
Label1. Caption= Labell. Caption+" "+words(i)
Next i
End sub
'查找相同字母组成的英文单词,存储在 words数组中
Function search(a As String, b As Integer, c As Integer)As Integer
For i=1 To 3000
flag=False
If a=wordcharsort(i) And______ ThenFor j=1 To c
If words(j)=Getwords(b) Then flag=True
Next j
If flag=False Then
Words(c)=Getwords(b)
__________
End if
End If
Next i
search=c
End function
'对英文单词中的字母进行排序
Function rank(s As String)As String
Dim c(l To 45) As String
wordscount=1
For xk=1 To 45
c(xk)=" "Next xk
For j=1 To Len(s)
c(j)= _______Next j
For k=1 To Len (s)-1For kk=Len(s) To k+1 Step-1
If Asc(c(kk))<Asc(c(kk-1))Thentmp=c(kk):c(kk)=c(kk-1):c(kk-1)=tmp
End if
Next kk
Next k
For j=1 To Len(s)
rank -rank & c(i)
Next j
End function
数组a和数组b中元素的个数分别为n1和n2,现在从a,b两个数组中选取最小的n1个数据并按升序排列保存到a数组中。示例1:a={1},b={5,3},则a={1};示例2:a={3,1},b={2,4},则a={1,2}。实现上述功能的VB程序段如下:
Private Sub Form _ Load( )
′数组a,b存储整数,代码略
End sub
Private Sub Command1_Click( )
Dim i As Integer,j As Integer, k As Integer, t As Integer, flag As Boolean
flag- True
For i=1To ①
j=n2
k=i
For j=n1Toi+1Step-1
If a(k)<= b(1) And k <> i Then
Next i
For i=1 To nl
Listl AddItem Str(a(i))
Next i
End sub
请回答问题:
(1)要使程序运行时,清空列表框List1的内容,可在 Form Load事件过程中添加语句:_____(单选,填字母:
(2)请将程序代码①②处补充完整。
①_______________________
②_______________________
(3)程序代码方框处,flag为_______时,表示b数组该遍加工需要进行_______排序(选填:冒泡/选择)。
Private Sub Form _ Load( )
′数组a,b存储整数,代码略
End sub
Private Sub Command1_Click( )
Dim i As Integer,j As Integer, k As Integer, t As Integer, flag As Boolean
flag- True
For i=1To ①
j=n2

If b(j)< b(j-1) Then t=b(j: b(j)=b(j-1): b(j-1)=t
j=j-1
Loopk=i
For j=n1Toi+1Step-1
If a(j)<a(k) then k-j
Next jIf a(k)<= b(1) And k <> i Then
t=a(k):a(k)=a(i): a(i)=t
flag=False
Elself② Thent=a(i):a(i)=b(1):b(1)=t
flag=True
End IfNext i
For i=1 To nl
Listl AddItem Str(a(i))
Next i
End sub
请回答问题:
(1)要使程序运行时,清空列表框List1的内容,可在 Form Load事件过程中添加语句:_____(单选,填字母:
A.List1.Caption=""/ | B.List1.Clear/ | C.List1. Additem"")。 |
①_______________________
②_______________________
(3)程序代码方框处,flag为_______时,表示b数组该遍加工需要进行_______排序(选填:冒泡/选择)。
数组a为一组正整数,其奇数下标的数组元素是升序排序的奇数,偶数下标的数组元素是升序排序的偶数依据对分查找思想,设计一个在数组a中查找数据key的程序。实现该功能的VB程序段如下:
key=Val(Textl. Text):i=1:j=10
Do While i <=J
m=Int(i+j)/2+0.5)
If key Mod 2+ a(m) Mod 2= 1 Then m=m-1
If a(m)= key Then
List 1. AddIton"找到了!": Exit Do
ElseIf a(m)> key Then
j=m-2
Else
i=m+2
End If
Loop
If i>j Then List1. AddItem "未找到此数"
如果数组元素a(1)到a(10)的数据依次是“1,4,5,6,11,10,23,16,25,20”,key的值为1,则执行上述程序段,变量m依次被赋值为( )
key=Val(Textl. Text):i=1:j=10
Do While i <=J
m=Int(i+j)/2+0.5)
If key Mod 2+ a(m) Mod 2= 1 Then m=m-1
If a(m)= key Then
List 1. AddIton"找到了!": Exit Do
ElseIf a(m)> key Then
j=m-2
Else
i=m+2
End If
Loop
If i>j Then List1. AddItem "未找到此数"
如果数组元素a(1)到a(10)的数据依次是“1,4,5,6,11,10,23,16,25,20”,key的值为1,则执行上述程序段,变量m依次被赋值为( )
A.5 3 2 1 | B.6 3 2 1 | C.5 2 1 | D.6 5 2 1 |
有如下VB程序段:
a(1)=20: a(2)=3: a(3)=21: a(4)=37
a(5)=62: a(6)=20: a(7)=13: a(8)=33
k=Abs(a(2)-a(1))
For i=3 To 8
If Abs(a(i)- a(i-1))>k Then k= Abs(a(i)-a(i-1))
Next
执行该程序段后,变量k的值为( )
a(1)=20: a(2)=3: a(3)=21: a(4)=37
a(5)=62: a(6)=20: a(7)=13: a(8)=33
k=Abs(a(2)-a(1))
For i=3 To 8
If Abs(a(i)- a(i-1))>k Then k= Abs(a(i)-a(i-1))
Next
执行该程序段后,变量k的值为( )
A.7 | B.17 | C.25 | D.42 |
有如下VB程序段:
Dim x As String, y As String
Dim ans As Integer
x = "5": y="20": ans = 0
If x > y Then
ans = val(x)-1
Else
ans= Val(y)+1
ans= ans+ Val(x +y)
Text1. Text = Str(ans)
执行该程序段后,文本框Text1中显示的是( )
Dim x As String, y As String
Dim ans As Integer
x = "5": y="20": ans = 0
If x > y Then
ans = val(x)-1
Else
ans= Val(y)+1
ans= ans+ Val(x +y)
Text1. Text = Str(ans)
执行该程序段后,文本框Text1中显示的是( )
A.46 | B.29 | C.524 | D.541 |
某算法流程图如下图所示,该流程图完整执行一次后,下列说法错误的是( )


A.变量s存储的值为![]() |
B.变量i的值为30 |
C.语句“s←s+i”共执行了10次 |
D.语句“i<30”共执行了30次 |