- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- + 算法实例
- 枚举算法
- 解析算法
- 排序算法
- 查找算法
- 递归算法
- 面向对象程序设计 VB开发工具
- 算法实例的程序实现
- 算法及算法的表示方法
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
找出表示问题的前提条件与结果之间关系的数学表达式,并通过表达式的计算来时限问题求解,这种方法叫做( )
A.解析法 | B.顺序查找算法 | C.递归算法 | D.穷举法 |
数组a中的n个元素经排序生成左右交替上升数据序列的VB程序段如下:
For i = 1 To (1)
For j = (2) To i + 1 Step -1
For j = i + 1 To (3)
Next i
方框中的代码由以下三部分组成:
① n - i + 1 ②n \ 2 ③n - i
代码顺序正确的选项是
For i = 1 To (1)
For j = (2) To i + 1 Step -1
If d(j) <d(j - 1) Then
t = d(j): d(j) = d(j - 1): d(j - 1) = tEnd If
Next jFor j = i + 1 To (3)
If d(j) <d(j + 1) Then
t = d(j): d(j) = d(j + 1): d(j + 1) = tEnd If
Next jNext i
方框中的代码由以下三部分组成:
① n - i + 1 ②n \ 2 ③n - i
代码顺序正确的选项是
A.②①③ | B.①②③ | C.②③① | D.③②① |
列出所有可能的情况,逐个判断有哪些符合问题所要求的条件,从而解决问题,这是( )思路
A.递归算法 | B.顺序查找算法 | C.穷举法 | D.解析法 |
(加试题)编号为 1 到 8 的纸牌顺时针排成一圈,现从编号为 1 的牌从数字 1 开始顺时针数下去,1、2、3、„、20、21、„,一圈又一圈,则当数到数字 N 时,所在纸牌的编号为( )
A.N Mod 8 | B.(N+1) Mod 9 | C.1+(N-1) Mod 8 | D.1+(N-1) Mod 7 |
“旋转数组”过程是指将数组中的元素向右移动k个位置,其中k是非负数。以数组a向右移动3个位置为例,其移动过程有如下两种方法:
原始数据:
方法一:
①向右旋转1步:
②向右旋转2步:
③向右旋转3步:
方法二:
①将a(1)值放至旋转3个位置后位置a(4):
②将原a(4)值放至旋转3个位置后位置a(3):
③将原a(3)值放至旋转3个位置后位置a(2):
④将原a(2)值放至旋转3个位置后位置a(1):
有n个数存储在数组a中,给定一个整数p(1≤p≤n),将数组a的前p个数与后n-p个数分别向右旋转k次。例如数组a的各个数值分别是1,2,3,4,5,6,7,当p=4,k=1时,旋转后的结果为4,1,2,3,7,5,6。小明为此编写了VB程序,功能如下:在文本框Text2、Text3中依次输入p和k的值,单击“旋转数组”按钮Command1后,数组旋转后结果显示在Text4中。程序运行界面如下图所示,请回答下列问题:

(1)当文本框Text3中输入内容修改为3时,执行该程序后,a(3)的值为___________。
(2)请在划线处填入合适的代码。
Dim a(20) As Integer
Const n = 20
Private Sub Form_Load()
'随机产生n个[1,100]之间的随机整数,依次存储到a(1)、a(2)、…a(n)中,并在文本框Text1显示,代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer, p As Integer, k As Integer,cnt As Integer,c As Integer,t As Integer
p = Val(Text2.Text)
k = Val(Text3.Text)
i = 1:start = 1:c = a(i):cnt = 1
Do While cnt<= p '方法二
a(i) = c
If ________________ Then
start = start + 1
i = i + 1
c = a(i)
Else
c = t
End If
For i = 1 To k '方法一
temp = a(n)
For j = _______________
a(j) = a(j - 1)
Next j
For i = 1 To n
s = s + Str(a(i))
Next i
Text4.Text = s
End Sub
原始数据:
a(1) | a(2) | a(3) | a(4) |
1 | 2 | 3 | 4 |
方法一:
①向右旋转1步:
a(1) | a(2) | a(3) | a(4) |
4 | 1 | 2 | 3 |
②向右旋转2步:
a(1) | a(2) | a(3) | a(4) |
3 | 4 | 1 | 2 |
③向右旋转3步:
a(1) | a(2) | a(3) | a(4) |
2 | 3 | 4 | 1 |
方法二:
①将a(1)值放至旋转3个位置后位置a(4):
a(1) | a(2) | a(3) | a(4) |
1 | 2 | 3 | 1 |
②将原a(4)值放至旋转3个位置后位置a(3):
a(1) | a(2) | a(3) | a(4) |
1 | 2 | 4 | 1 |
③将原a(3)值放至旋转3个位置后位置a(2):
a(1) | a(2) | a(3) | a(4) |
1 | 3 | 4 | 1 |
④将原a(2)值放至旋转3个位置后位置a(1):
a(1) | a(2) | a(3) | a(4) |
2 | 3 | 4 | 1 |
有n个数存储在数组a中,给定一个整数p(1≤p≤n),将数组a的前p个数与后n-p个数分别向右旋转k次。例如数组a的各个数值分别是1,2,3,4,5,6,7,当p=4,k=1时,旋转后的结果为4,1,2,3,7,5,6。小明为此编写了VB程序,功能如下:在文本框Text2、Text3中依次输入p和k的值,单击“旋转数组”按钮Command1后,数组旋转后结果显示在Text4中。程序运行界面如下图所示,请回答下列问题:

(1)当文本框Text3中输入内容修改为3时,执行该程序后,a(3)的值为___________。
(2)请在划线处填入合适的代码。
Dim a(20) As Integer
Const n = 20
Private Sub Form_Load()
'随机产生n个[1,100]之间的随机整数,依次存储到a(1)、a(2)、…a(n)中,并在文本框Text1显示,代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer, p As Integer, k As Integer,cnt As Integer,c As Integer,t As Integer
p = Val(Text2.Text)
k = Val(Text3.Text)
i = 1:start = 1:c = a(i):cnt = 1
Do While cnt<= p '方法二
i =_____________
t = a(i)a(i) = c
If ________________ Then
start = start + 1
i = i + 1
c = a(i)
Else
c = t
End If
cnt = cnt + 1
LoopFor i = 1 To k '方法一
temp = a(n)
For j = _______________
a(j) = a(j - 1)
Next j
a(p + 1) = temp
Next iFor i = 1 To n
s = s + Str(a(i))
Next i
Text4.Text = s
End Sub
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。
数组元素a(1)至a(5)依次为5,22,28,42,55,在a(3)处分成两段,交换位置后为:
旋转数组a的最小元素是5。
数组d(1)至d(5)依次为0,1,1,1,1,在d(5)处分成两段,交换位置后为:
旋转数组d的最小元素是0。
小明依据查找算法思想,设计一个查找旋转数组d最小元素的程序,功能如下:运行程序时,利用“添加”按钮Command1和文本框Text1依次输入旋转数组d的值,在列表List1中显示旋转数组,单击“求解”按钮Command2,在标签Label2中显示旋转数组d最小元素值。运行效果图所示,实现该功能的的VB程序如下。

(1)要使程序运行时,文本框Text1无显示内容,下列方法不能实现该要求的是_______(单选,填字母:A.在Form_Load事件处理过程中添加语句“Text1.Text=""”/B.在Command1_Click事件处理过程中添加语句“Text1.Text=""”/C.设计程序界面时,在属性面板设置文本框Text1的Text属性值为空)
(2)程序代码中,加框处有错,请改正。
(3)程序代码中,将划线处代码补充完整。
(4)程序代码中,虚线框内自定义函数中主要采用的算法是__________(单选,填字母:A.冒泡排序/B.选择排序/C.顺序查找/
Dim n As Integer
Dim d(1 To 100) As Integer '数组 d 存储待排序数据
Private Sub Command1_Click()
'按旋转数组规则将数据存入数组d中,代码略
End Sub
Private Sub Command2_Click()
Dim mid As Integer, L As Integer, R As Integer
L = 1: R = n
mid = L
Do While d(L) >= d(R)
If L=R Then'改错
mid = R
Exit Do
End If
mid = (L + R) \ 2
If d(L)=d(R) And d(mid)=d(R) Then
mid =______________ '填空
Exit Do
End If
If d(L) < d(mid) Then
L = mid
End If
Loop
Label2.Caption = "最小值为" + Str(d(mid))
End Sub

End If
Next i
End Function
数组元素a(1)至a(5)依次为5,22,28,42,55,在a(3)处分成两段,交换位置后为:
a(1) | a(2) | a(3) | a(4) | a(5) |
28 | 42 | 55 | 5 | 22 |
旋转数组a的最小元素是5。
数组d(1)至d(5)依次为0,1,1,1,1,在d(5)处分成两段,交换位置后为:
d(1) | d(2) | d(3) | d(4) | d(5) |
1 | 0 | 1 | 1 | 1 |
旋转数组d的最小元素是0。
小明依据查找算法思想,设计一个查找旋转数组d最小元素的程序,功能如下:运行程序时,利用“添加”按钮Command1和文本框Text1依次输入旋转数组d的值,在列表List1中显示旋转数组,单击“求解”按钮Command2,在标签Label2中显示旋转数组d最小元素值。运行效果图所示,实现该功能的的VB程序如下。

(1)要使程序运行时,文本框Text1无显示内容,下列方法不能实现该要求的是_______(单选,填字母:A.在Form_Load事件处理过程中添加语句“Text1.Text=""”/B.在Command1_Click事件处理过程中添加语句“Text1.Text=""”/C.设计程序界面时,在属性面板设置文本框Text1的Text属性值为空)
(2)程序代码中,加框处有错,请改正。
(3)程序代码中,将划线处代码补充完整。
(4)程序代码中,虚线框内自定义函数中主要采用的算法是__________(单选,填字母:A.冒泡排序/B.选择排序/C.顺序查找/
A.对分查找)。 |
Dim d(1 To 100) As Integer '数组 d 存储待排序数据
Private Sub Command1_Click()
'按旋转数组规则将数据存入数组d中,代码略
End Sub
Private Sub Command2_Click()
Dim mid As Integer, L As Integer, R As Integer
L = 1: R = n
mid = L
Do While d(L) >= d(R)
If L=R Then'改错
mid = R
Exit Do
End If
mid = (L + R) \ 2
If d(L)=d(R) And d(mid)=d(R) Then
mid =______________ '填空
Exit Do
End If
If d(L) < d(mid) Then
L = mid
ElseIf d(mid) < d(R) Then
R = midEnd If
Loop
Label2.Caption = "最小值为" + Str(d(mid))
End Sub

End If
Next i
End Function
(加试题)编写一个成绩查询程序,输入要查找的分数,输出该分数的名次及同分人数,其算法是:用数组a存放不同的分值,数组m存储相同分数的人数,数组mc存储不同分数的名次。例如,数据库中有一组成绩(已按降序排列):98,95,95,92,90,90,87,按该算法,各数组值如下表所示:
程序界面如下图所示,在文本框Text1中输入查询成绩,点击“查找”按钮,若找到,则输出该分数的名次和同分数的人数,若找不到,则输出“查无此分”。

程序代码如下,请在划线处填入合适的代码。
Dim n As Integer
Dim a(l To 1000) As Integer ’存放不同的分数值
Dim m(0 To 1000) As Integer ’存放相同分数的人数
Dim mc (0 To 1000) As Integer ’存放此分数的名次
Private Sub Form_Load()
Dim conn As New ADODB. Connection
Dim rs As New ADODB. Recordset
Dim tmp As Integer
Dim s As Integer
tmp = -1: n = 0
conn. Connectionstring = 〃provider=Microsoft. AC
conn. Open
Set rs. ActiveConnection = conn
rs.Open "Select * from score"
mc(0) = 1: m(0) = 0
If s = tmp Then ’当前读入分数与上一个分数相同
m(n) = __________
Else
n = n + 1
a(n) = s
m(n) = 1
mc(n) = ___________
End If
_____________
rs. MoveNext
Private Sub Command1_Click0
Dim key As Integer, i As Integer, j As Integer, mid As Integer
key = Val (Text1.Text)
i = 1: j = n
mid = (i + j) \ 2
Do While i <= j And ____________
If a(mid) = key Then
End Sub
i | 1 | 2 | 3 | 4 | 5 |
a | 98 | 95 | 92 | 90 | 87 |
m | 1 | 2 | 1 | 2 | 1 |
mc | 1 | 2 | 4 | 5 | 7 |
程序界面如下图所示,在文本框Text1中输入查询成绩,点击“查找”按钮,若找到,则输出该分数的名次和同分数的人数,若找不到,则输出“查无此分”。

程序代码如下,请在划线处填入合适的代码。
Dim n As Integer
Dim a(l To 1000) As Integer ’存放不同的分数值
Dim m(0 To 1000) As Integer ’存放相同分数的人数
Dim mc (0 To 1000) As Integer ’存放此分数的名次
Private Sub Form_Load()
Dim conn As New ADODB. Connection
Dim rs As New ADODB. Recordset
Dim tmp As Integer
Dim s As Integer
tmp = -1: n = 0
conn. Connectionstring = 〃provider=Microsoft. AC
A.OLEDB. 12. 0; data source=〃 & App. Path & 〃\mydb. accdb〃 |
Set rs. ActiveConnection = conn
rs.Open "Select * from score"
mc(0) = 1: m(0) = 0
Do While Not rs. EOF
s = rs. Fields (〃成绩〃)If s = tmp Then ’当前读入分数与上一个分数相同
m(n) = __________
Else
n = n + 1
a(n) = s
m(n) = 1
mc(n) = ___________
End If
_____________
rs. MoveNext
Loop
End SubPrivate Sub Command1_Click0
Dim key As Integer, i As Integer, j As Integer, mid As Integer
key = Val (Text1.Text)
i = 1: j = n
mid = (i + j) \ 2
Do While i <= j And ____________
mid = (i + j) \ 2
If a(mid) < key Then
j = mid – 1Else
i = mid + 1End If
LoopIf a(mid) = key Then
Label2. Caption = 〃名次: 〃+ Str(mc (mid)) + 〃同分人数: 〃+ Str(m(mid))
ElseLabel2. Caption = 〃查无此分〃
End IfEnd Sub
设计算法,求同时满足以下条件的所有四位正整数之合s。①不大于n(n的值由键盘输入)②能被9整除③十位数是2。算法流程图如下所示:

(1)解决上述问题的算法属于(_______)
A.枚举法 B.擂台法 C.解析法 D.对分法
(2)判断x能被9整除的设计思路是 ;取x十位上数字的设计思路是 。(_______)
A.x除以9的余数为0;先求x除以10的余数,再求该余数除以10的商
B.x除以9的商为0;先求x除以10的余数,再求该余数除以100的商
C.x除以9的商为0;先求x除以100的余数,再求该余数除以100的商
D.x除以9的余数为0;先求x除以100的余数,再求该余数除以10的商
(3)小明根据上述思路,设计了一段不完整的程序。请完善划线处内容,完成上述功能。
Dim n as Integer,x as Integer,s as long
s=0
n=InputBox(“输入四位数上限值”)
For____________
_____________

(1)解决上述问题的算法属于(_______)
A.枚举法 B.擂台法 C.解析法 D.对分法
(2)判断x能被9整除的设计思路是 ;取x十位上数字的设计思路是 。(_______)
A.x除以9的余数为0;先求x除以10的余数,再求该余数除以10的商
B.x除以9的商为0;先求x除以10的余数,再求该余数除以100的商
C.x除以9的商为0;先求x除以100的余数,再求该余数除以100的商
D.x除以9的余数为0;先求x除以100的余数,再求该余数除以10的商
(3)小明根据上述思路,设计了一段不完整的程序。请完善划线处内容,完成上述功能。
Dim n as Integer,x as Integer,s as long
s=0
n=InputBox(“输入四位数上限值”)
For____________
If___________and_____________ Then
s=s+xEnd If
Next_____________
数组d中存放了一组数据如表所示,采用对分査找数组元素值86。第一次査找的数组元素是d[4],第二组査找的数组元素是( )
d[1] | d[2] | d[3] | d[4] | d[5] | d[6] | d[7] |
65 | 73 | 75 | 82 | 85 | 91 | 95 |
A.d[2] | B.d[3] | C.d[5] | D.d[6] |