- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- 算法实例
- 面向对象程序设计 VB开发工具
- 算法实例的程序实现
- 算法及算法的表示方法
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
k= Val(Text1.Text)
i=1:j=6:Label1.Caption="":f=False
Do While i<=j And Not f
m=(i+j)\2
If a(m)=k Then f= True
If a(m)>a(i) Then
If a(i)<=k And k<a(m)Then j=m-1 Else i=i+1
ElseIf a(m)<k And k<=a(j)Then i=i+1 Else j=j-1
End IfLabel1 Caption=Label1 Caption+ Str(a(m))
Loop
数组元素a(1)到a(6)的值依次为“58,66,72,24,35,40”,在文本框Text1中输人的值为35,执行该程序段,标签 Label1中显示的值是( )
A.72 35 | B.24 35 |
C.72 24 35 | D.72 24 24 35 |
算法思路:n较大时,n!的值将超出long类型范围,求出n!的结果再数0的个数不现实。那么末尾的0到底是从哪里来的?每一个因子5与任一偶数相乘就会产生一个0。所以末尾有多少0是由因子5的个数决定的,求出因子5的个数即是末尾0的个数。程序运行界面和代码如图所示。

(1)为使窗体加载时,窗体标题栏自动显示为“第14题程序”,则可以在___________过程(填写过程名)中添加代码:Form1. Caption="第14题程序"。
(2)实现上述算法的VB程序如下,请补充程序中画线处的代码。
Private Sub Command1_Click()
Dim n As Integer
n=Val(Textl. Text)
i=1
Do While①___________
s=s+n\5^i
i=i+1
Loop
List1. AddItem Str(n)+"!末尾包含0的个数:"+②_______
End sub
(3)根据上述算法,2018!末尾包含0的个数是个________个。
count = 0
For i = 1 To 20
a(i) = Int(Rnd ∗ 100) + 1
Next i
For i = 1 To 20
①
Next i
For i = 1 To 100
If b(i) <> 0 Then count = count + 1
Next i
Label1.Caption= "不重复数字个数" + Str(count)
为实现上述功能,则程序①处应填入的语句为( )
A.b(i)=1 | B.b(a(i))=a(b(i))+1 | C.b(i)=b(i)+1 | D.b(a(i))=b(a(i))+1 |

Private Sub Command1_Click()
Dim s As string
Dim n As Integer,w As Integer
s=Text1.Text
For i=1 To 3
n=Len(s):w=1
For j=2 To n
If ________ Then w=j Else Exit ForNext j
s=Mid(s,1,w-1)+Mid(s,w+l,n-w)
Next iText2.Text=s
End Sub
画线处的正确代码为( )
A.Val(Mid(s,w,1))<=Val(Mid(s,j,1)) |
B.Val(Mid(s,j,1))<=Val(Mid(s,j+1,1)) |
C.Val(Mid(s,w,1))>=Val(Mid(s,j,1)) |
D.Val(Mid(s,j,1))>=Val(Mid(s,j+1,1)) |
例如,共有N=5个景点,每个景点连接的下一个景点分别是2,4,5,5,2。
景点号 | 1 | 2 | 3 | 4 | 5 |
下一景点号 | 2 | 4 | 5 | 5 | 2 |
则他可以从2号景点出发,最多可以游玩2号、4号、5号三个景点。

程序代码如下:
Private Sub Command1_Click()
Dim a(1 To 100) As Integer, d(1 To 100) As Integer
Dim jd As String, m As String, c As Integer, i As Integer
Dim s As Integer, p As Integer, k As Integer, ans As Integer
jd = Text1.Text + ","
s = 0: c = 0
For i = 1 To Len(jd)
m = Mid(jd, i, 1)If m <> "," Then
①
Else
c = c + 1: a(c) = s: s = 0
End If
Next i
ans = 0: k = 0
For i = 1 To c
For k = 1 To cd(k) = 0
Next k
If d(i) = 0 Then
p = i
Do While p <= c
If d(p) = 0 Then
k = k + 1: d(p) = k
Else
②
If y > ans Then ans = y
k = 0
Exit Do
End If

Loop
End If
Next i
Text2.Text = Str(ans)
End Sub(1)要使程序运行时,Form1的BackColor属性值为黑色,以下代码正确的是______(单选,填字母)。
End Sub |
(2)若有7个景点,且每个景点的连接情况为:6,3,7,2,7,5,4,那么小龙最多可以游玩的景点数是__________。
(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)
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 |
A.查找法 | B.解析法 | C.排序法 | D.穷举法 |
A.解析算法 | B.穷举算法 | C.递归法 | D.选择排序 |
•路线每个位置只能向右或向下
•任何一个岔口优先向右走,右侧不通再向下走
•一条路线中每个位置只能走一次,不能重复
算法思路:探路过程中,记录每个位置坐标到数组lu;遇到岔路口(向右向下都通),则记录路口坐标到数组cha;遇到前方无路时,需要返回到上一个路口,标记路口右侧不通;当前方无路,岔路口数组也退回到0,说明整体不通,否则根据规则走到右下角为止,最后输出整体线路坐标。
实现算法的程序如下,运行结果如图所示。
回答下列问题:
(1)根据规则,如图迷宫矩阵正确路线的第6个位置是a数组的第_________个元素(填数字)

(2)在程序划线处填上合适代码,使程序完整。
Dim a(1 To 50) As Integer
Private Sub Command1_Click()
Dim i As Integer,j As Integer,pos As Integer
Dim cha(1 To 10)As Integer'记录一条路线中各个岔路口
Dim lu(1 To 10) As Integer’记录路线经过的位置
pos=1:j=0:lu(1)=1:i=1
Do While i <=9‘第1个和最后1个固定,中间有9个需要路过的路径点
If pos Mod 6<>0 And a(pos+1)=1 Then' 向右畅通
If pos+6 <=30 and a(pos+6)=1 Then‘记录岔路口j=j+1
_____________
End If
pos=pos+1
i=i+1
1u(i)=pos
Else If pos+6 <=30 And a(pos+6)=1 Then’向下畅通
pos=pos+6
i=i+1
lu(i)=pos
Else’坐标退回到上一个岔路口
If j=0 Then Exit Do
Do While lu(i)<>cha(j)
_____________
Loop
a(cha(j)+1)=0’标记此路口右侧不可用
_____________
j=j-1
End If;
Loop
If j=0 Then
Text1.Text="没有畅通道路"Else
For i=1 To 10Text1.Text=Text1.Text+Str(lu(i))
Next i
End If
End SubPrivate Sub Form_Load()
‘生成图形矩阵的数组a各个元素,并在列表框显示,代码略
End Sub