- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- + 算法实例
- 枚举算法
- 解析算法
- 排序算法
- 查找算法
- 递归算法
- 面向对象程序设计 VB开发工具
- 算法实例的程序实现
- 算法及算法的表示方法
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
如图a所示,在excel中使用Rank函数可以快速地返回一个数字在数字列表中的排位,而且是同分同名次,非常方便。小明想用Vb编写一个程序来实现类似Rank排名次的功能,程序运行时,随机产生10个[60,100]之间的随机数,并显示在列表框List1中,单击“排名”按钮Command1,在列表框List2中输出数据及其排名,程序运行界面如图b所示。


实现上述功能的VB程序如下,代码加框处有错,请改正。
划线①处代码应改为:___________________
划线②处代码应改为:____________
Dim a(1 to 10) As Integer ‘存储原始数据
Dim b(1 to 10)As Integer ‘存放名次
Private Sub Command1_Click()
Dim i As Integer,j As Integer, n As Integer
For i=1 To 10
n=0
For j=1 To 10
If If a(i)<=a(j) Then n=n+1 ‘①
b(i)=n ‘②
Next j
Next i
For i= 1 to 10
List2.Additem a(i)&” ”&b(i)
Next i
End Sub
Private Sub Form_Load()
‘随机产生10个[60,100]之间的随机数,并显示在List1中,代码略。
End Sub


实现上述功能的VB程序如下,代码加框处有错,请改正。
划线①处代码应改为:___________________
划线②处代码应改为:____________
Dim a(1 to 10) As Integer ‘存储原始数据
Dim b(1 to 10)As Integer ‘存放名次
Private Sub Command1_Click()
Dim i As Integer,j As Integer, n As Integer
For i=1 To 10
n=0
For j=1 To 10
If If a(i)<=a(j) Then n=n+1 ‘①
b(i)=n ‘②
Next j
Next i
For i= 1 to 10
List2.Additem a(i)&” ”&b(i)
Next i
End Sub
Private Sub Form_Load()
‘随机产生10个[60,100]之间的随机数,并显示在List1中,代码略。
End Sub
某对分查找算法的VB程序如下:
n=0
i=1
j=6
key=val(Text1.text)
f=False
Do While i<=j And Not f
m=(i+j+1)\2
n=n+1
If key=d(m) Then
f=True
ElseIf key>d(m) Then
j=m-1
Else
i=m+1
End if
Loop
数组元素d(1)到d(6)的值依次为“87,72,53,41,29,18”,若该程段运行结束后,n的值为2,则key的值是( )
n=0
i=1
j=6
key=val(Text1.text)
f=False
Do While i<=j And Not f
m=(i+j+1)\2
n=n+1
If key=d(m) Then
f=True
ElseIf key>d(m) Then
j=m-1
Else
i=m+1
End if
Loop
数组元素d(1)到d(6)的值依次为“87,72,53,41,29,18”,若该程段运行结束后,n的值为2,则key的值是( )
A.87或29 | B.72或18 | C.72 或 29 | D.53 或 18 |
小明基于选择排序算法编写了一个VB程序,功能如下:某班有50个学生,从中选择10个身高最高的同学,要求被选的任何两个人不能身高一样(所给的数据保证能选10个)。
实现上述功能的VB程序如下,但加框处代码有错,请改正。
Const n = 50
Dim d(0 To n) As single , name(1 to n) as string
'读入50个学生的身高,依次存入d(1)…d(50), 最高身高小于2,姓名存入name(1)…name(50)
'代码略
Private Sub Command1_Click()
实现上述功能的VB程序如下,但加框处代码有错,请改正。
Const n = 50
Dim d(0 To n) As single , name(1 to n) as string
'读入50个学生的身高,依次存入d(1)…d(50), 最高身高小于2,姓名存入name(1)…name(50)
'代码略
Private Sub Command1_Click()
Dim i As Integer, j As Integer, temp As single, k As Integer,r as string
d(0) = 2
For i = 1 To 10
For j = i To n
If d(j) < d(i - 1) Then
If Then
k = j
End If
End If
Next j
If k <> i Then
temp = d(k): d(k) = d(i): d(i) = temp
r=name(k) : name(k)=name(i) : name(i)=r
End If
Next i
For i = 1 To 10 ‘输出被选的10个人的名字和身高。
List2.AddItem name(i) & d(i)
Next i
End Sub古希腊著名科学家毕达哥拉斯把1、3、6、10、15、21、28……称为三角形数。这些三角形数序列有一定的规律,后一个数与前一个数的差刚好构成一个等差数列2、3、4、5、6、7、……,所以,第2位的“3”等于序列的第1位数“1”加上等差数“2”,第3位的6等于序列的第2位数“3”加上等差“3”……,第n位数m等于序列的第n-1位数加上等差数n。小金利用这个规律编写了一个判断三角形数的VB程序,在文本框Textl中输入一个大于1的正整数,单击“判断”按钮Commandl,在标签Labell中显示判断结果。程序设计界面如图所示。

(1) 在设计程序界面时,要清空标签中显示的内容“Labell”,应修改该标签的_________属性。
(2) VB程序代码如下,请在划线处填入合适代码。
Private Sub Command1 Click()
s =________________________
If n = s Then
Labell. Caption = Str(n) +〃是一个三角形数。"
Exit For
______________________________________
Labell. Caption = Str(n) +"不是一个三角形数。"
Exit For
End If
Next i
(3)若文本框Text1中输入的内容为“27”,单击按钮Commandl后,标签Labell中显示的内容是_________________

(1) 在设计程序界面时,要清空标签中显示的内容“Labell”,应修改该标签的_________属性。
(2) VB程序代码如下,请在划线处填入合适代码。
Private Sub Command1 Click()
Dim n As Integer, s As Integer
s = 0
n = Val(Textl. text)
If n > 1 Then
For i = 1 To ns =________________________
If n = s Then
Labell. Caption = Str(n) +〃是一个三角形数。"
Exit For
______________________________________
Labell. Caption = Str(n) +"不是一个三角形数。"
Exit For
End If
Next i
Else
Labell.Caption = 〃请输入一个大于1的正整数"End If
End Sub(3)若文本框Text1中输入的内容为“27”,单击按钮Commandl后,标签Labell中显示的内容是_________________
数组a为一组正整数,奇数在前,偶数在后。奇数与偶数已分别按升序排序。根据对分查找思想,设计一个在数组a中查找数据Key的程序。实现该功能的VB程序段如下:
i = 1: j = 10
key = Val(Text1.Text)
Do While i <= j
m = (i + j) \ 2
If a(m) = key Then Exit Do ’ Exit Do表示退出循环
If key Mod 2=1 And a(m) Mod 2=0 Then
(1)
ElseIf key Mod 2=0 And a(m) Mod 2=1 Then
(2)
Else
(3)
End If
Loop
If i>j Then s = "没有找到!" Else s="位置:"+Str(m)
Text1.Text = s
上述程序中方框处可选语句为:
①i=m+1
②j=m-1
③If key<a(m) Then j=m-1 Else i=m+1
则(1)、(2)、(3)处语句依次是( )
i = 1: j = 10
key = Val(Text1.Text)
Do While i <= j
m = (i + j) \ 2
If a(m) = key Then Exit Do ’ Exit Do表示退出循环
If key Mod 2=1 And a(m) Mod 2=0 Then
(1)
ElseIf key Mod 2=0 And a(m) Mod 2=1 Then
(2)
Else
(3)
End If
Loop
If i>j Then s = "没有找到!" Else s="位置:"+Str(m)
Text1.Text = s
上述程序中方框处可选语句为:
①i=m+1
②j=m-1
③If key<a(m) Then j=m-1 Else i=m+1
则(1)、(2)、(3)处语句依次是( )
A.①、②、③ | B.①、③、② | C.③、②、① | D.②、①、③ |
某对分查找算法的 VB 程序段如下:( )
i = 1: j = 7
key = Int(Rnd() * 100) Do While i <= j
m = (i + j) \ 2
If a(m) = Key Then
Exit Do
ElseIf a(m) > Key Then
j = m - 1
Else
i = m + 1
End If
数组元素 a(1)到 a(7)的值依次为“25,42,53,66,77,83,98”,运行上述程序段后,下列条件表达式肯定不成立的是
i = 1: j = 7
key = Int(Rnd() * 100) Do While i <= j
m = (i + j) \ 2
If a(m) = Key Then
Exit Do
ElseIf a(m) > Key Then
j = m - 1
Else
i = m + 1
End If
数组元素 a(1)到 a(7)的值依次为“25,42,53,66,77,83,98”,运行上述程序段后,下列条件表达式肯定不成立的是
A.j-i=0 | B.i-j=2 | C.i=8 | D.m<=7 |
有一组正整数,要求仅对其中的偶数进行降序排序。排序后偶数在前,奇数在后。排序示例如下。
程序运行界面如下图所示。
实现上述功能的 VB 程序如下,但加框处代码有错,请改正。
Const n = 8
Dim a(1 To n) As Integer Private Sub Form_Load()
'排序前数据存储在数组 a 中,并在文本框 Text1 中显示代码略 End Sub
Private Sub Command1_Click()
Dim k As Integer, i As Integer, j As Integer, t As Integer
i = 1
Do While i <= n - 1
k = i
For j = i + 1 To n
'①
k = j
ElseIf a(k) Mod 2 = 0 And a(j) Mod 2 = 0 And a(j) > a(k) Then
k = j
End If
Next j
If k <> i Then
t = a(k): a(k) = a(i): a(i) = t
End If
'②
Loop
排序前 | 75 | 78 | 60 | 86 | 61 | 75 | 36 | 88 |
排序后 | 88 | 86 | 78 | 60 | 36 | 75 | 61 | 75 |
程序运行界面如下图所示。
实现上述功能的 VB 程序如下,但加框处代码有错,请改正。
Const n = 8
Dim a(1 To n) As Integer Private Sub Form_Load()
'排序前数据存储在数组 a 中,并在文本框 Text1 中显示代码略 End Sub
Private Sub Command1_Click()
Dim k As Integer, i As Integer, j As Integer, t As Integer
i = 1
Do While i <= n - 1
k = i
For j = i + 1 To n

k = j
ElseIf a(k) Mod 2 = 0 And a(j) Mod 2 = 0 And a(j) > a(k) Then
k = j
End If
Next j
If k <> i Then
t = a(k): a(k) = a(i): a(i) = t
End If

Loop
'依次输出排序后的数据。代码略 End Sub
____________法就是在分析具体问题的基础上,抽取出一个数学模型,这个数学模型能用若干个解析式表示出来,解决了这些表达式,问题也就得以解决。
穷举法的适用范围是( )
A.一切问题 |
B.所求问题的解无限多 |
C.所求问题解的个数有限且有明确的条件 |
D.所求问题解的个数有限且无明确的条件 |
一玻璃球从高空做自由落体运动,在到达地面时速度为98m/s,请问:该玻璃球从高空开始下落到地面用了多少时间?编程求此问题最佳算法是( )
A.穷举法 | B.顺序查找算法 | C.递归算法 | D.解析法 |