- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- 算法实例
- 面向对象程序设计 VB开发工具
- 算法实例的程序实现
- 算法及算法的表示方法
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
小明基于选择排序算法编写了一个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酒店房间管理:酒店房间(房间数小于10000)编号按1、2、3…连续编号,老板对于没有出租的房子使用如下的方法来登记管理。连续的空房间,登记第一间的编号和连续的空房间数,比如空房间1,2, 6,7,8,10,则登记3条记录,分别为(1 2),(6 3),(10 1),某旅客退房了,需要把这房子也登记上去,有四种情况需要处理:
1)上靠,例如退的房间号为3,则原来登记的3条记录变成(1 3),(6 3),(10 1);
2)下靠,例如退的房间号为5,则原来登记的3条记录变成(1 2),(5 4),(10 1);
3)上下不靠,例如退的房间号为4,则登记的记录数变成4条(1 2) ,(4 1),(6 3),(10 1);
4)上下靠,例如退的房间号为9,则登记的记录数变成2条(1,2),(6,5);
小王依据上述描述设计了如下VB程序。请回答下列问题:
(1)当登记的记录有3条,分别为(1,4),(6,2),(10,3),现在某旅客退掉5号房间,则登记的记录变成_______________________________
(2)请在划线处填入合适的代码。
Const n = 5000
Dim a(0 To n) As Integer 'a(i)保存第i条记录的开始房间号
Dim b(0 To n) As Integer ' b(i)保存第i条记录的房间数
Dim c As Integer, k As Integer, sp As Integer 'k为原始记录数
'读取原始k条记录的数据,依次存入a(1),b(1),a(2),b(2)…a(k),b(k),代码略
'为了程序处理方便,虚设了下面2条记录
a(0) = 0 : b(0) = 0 : sp = k + 1 :a(sp) = 10000 : b(sp) = 0
Private Sub Command1_Click()
Dim i As Integer
c = Val(Text1.Text) 'c为退掉的房间号
i = 1
Do While a(i) < c '查找房间c,应该登记在某位置
i = i + 1
Loop
i = i - 1
'下面为处理退房登记问题
If a(i) + b(i) = c Then
If __________ Then '第4种情况,上下靠
b(i) = b(i) + 1 + b(i + 1)
For j = i + 1 To sp - 1
a(j) = a(j + 1) : b(j) = b(j + 1)
Next j
sp = sp - 1
Else '第1种情况,上靠
b(i) = b(i) + 1
End If
ElseIf c + 1 = a(i + 1) Then '第2种情况,下靠
a(i + 1) = c : b(i + 1) = b(i + 1) + 1
Else '第3种情况,上下不靠
For j =_____________________
a(j) = a(j - 1) : b(j) = b(j - 1)
Next j
a(i + 1) = c : b(i + 1) = 1 : sp = sp + 1
End If
‘下面为输出登记的记录,不包括虚设的两条记录
For i =1 to _______
List3.AddItem "第" & Str(i) & "记录(" & Str(a(i)) & "," & Str(b(i)) & ")"
Next i
End Sub
1)上靠,例如退的房间号为3,则原来登记的3条记录变成(1 3),(6 3),(10 1);
2)下靠,例如退的房间号为5,则原来登记的3条记录变成(1 2),(5 4),(10 1);
3)上下不靠,例如退的房间号为4,则登记的记录数变成4条(1 2) ,(4 1),(6 3),(10 1);
4)上下靠,例如退的房间号为9,则登记的记录数变成2条(1,2),(6,5);
小王依据上述描述设计了如下VB程序。请回答下列问题:
(1)当登记的记录有3条,分别为(1,4),(6,2),(10,3),现在某旅客退掉5号房间,则登记的记录变成_______________________________
(2)请在划线处填入合适的代码。
Const n = 5000
Dim a(0 To n) As Integer 'a(i)保存第i条记录的开始房间号
Dim b(0 To n) As Integer ' b(i)保存第i条记录的房间数
Dim c As Integer, k As Integer, sp As Integer 'k为原始记录数
'读取原始k条记录的数据,依次存入a(1),b(1),a(2),b(2)…a(k),b(k),代码略
'为了程序处理方便,虚设了下面2条记录
a(0) = 0 : b(0) = 0 : sp = k + 1 :a(sp) = 10000 : b(sp) = 0
Private Sub Command1_Click()
Dim i As Integer
c = Val(Text1.Text) 'c为退掉的房间号
i = 1
Do While a(i) < c '查找房间c,应该登记在某位置
i = i + 1
Loop
i = i - 1
'下面为处理退房登记问题
If a(i) + b(i) = c Then
If __________ Then '第4种情况,上下靠
b(i) = b(i) + 1 + b(i + 1)
For j = i + 1 To sp - 1
a(j) = a(j + 1) : b(j) = b(j + 1)
Next j
sp = sp - 1
Else '第1种情况,上靠
b(i) = b(i) + 1
End If
ElseIf c + 1 = a(i + 1) Then '第2种情况,下靠
a(i + 1) = c : b(i + 1) = b(i + 1) + 1
Else '第3种情况,上下不靠
For j =_____________________
a(j) = a(j - 1) : b(j) = b(j - 1)
Next j
a(i + 1) = c : b(i + 1) = 1 : sp = sp + 1
End If
‘下面为输出登记的记录,不包括虚设的两条记录
For i =1 to _______
List3.AddItem "第" & Str(i) & "记录(" & Str(a(i)) & "," & Str(b(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.s的值最终为-5 |
B.语句“k=k+1”共执行了4次 |
C.语句“s≤0”共判断了5次 |
D.该算法转成VB代码时能用Do循环语句实现 |
现要求编写VB程序实现如下功能:在文本框Text1中输入正整数n(n为奇数),单击“生成”按钮后,在文本框Text2中会显示一个有规律的对称数字串,形成为“1 3 ... n-2 n n-2 ...3 1”。例如n=9时,显示的数字串为“1 3 5 7 9 7 5 3 1”。

(1)应用程序界面设计时,为添加按钮,就使用如左图所示的“控件工具箱”中_______(填写数字标号);为将按钮上的字设置为“生成”,应在对应的属性窗口中______属性值修改为“生成”,根据代码可知,命令按钮“生成”的对象名是________。
(2)实现上述功能的VB程序如下。请在划线处填入合适的代码。
Private Sub Cmd1_Click()
Dim n As Integer,i As Integer,s As string
________________________
S=“”
For i=1 To n
If i<=n\2+1 Then

Else
S=s+ _______________
End if
Next i
Text2.Text=s
End Sub
(3)当n=9时,在实现程序功能的情况下,如果将程序中加框处的代码换成“s=str(2*i-1)+s”,单击“生成”按钮,其输出结果为___________________。


(1)应用程序界面设计时,为添加按钮,就使用如左图所示的“控件工具箱”中_______(填写数字标号);为将按钮上的字设置为“生成”,应在对应的属性窗口中______属性值修改为“生成”,根据代码可知,命令按钮“生成”的对象名是________。
(2)实现上述功能的VB程序如下。请在划线处填入合适的代码。
Private Sub Cmd1_Click()
Dim n As Integer,i As Integer,s As string
________________________
S=“”
For i=1 To n
If i<=n\2+1 Then

Else
S=s+ _______________
End if
Next i
Text2.Text=s
End Sub
(3)当n=9时,在实现程序功能的情况下,如果将程序中加框处的代码换成“s=str(2*i-1)+s”,单击“生成”按钮,其输出结果为___________________。
某地区公共自行车收费信息如下:“60分钟内免费;60分钟以上至120分钟(含),收费1元;120分钟以上至180分钟(含),收费2元;租用超过180分钟(含)以上的时间,按每小时3元计费(不足一小时的按一小时计)”。现按要求编写VB程序,界面如图图所示,程序功能如下:在文本框Text1中输入租车时间,单击“计费”按钮Command1,在标签Label5中输出对应的租车费用。
(1)在应用程序界面设计时,为添加“计费”按钮,应使用第2图所示的“控件工具箱”中的___(请填写相应编号),并在3图所示的“属性窗口”中,将____属性值设置为“计费”。



1图 2图 3图
(2)请根据题意将下列程序补充完整。
Private Sub Command1_Click()
Dim zysj As Single, zyfy As Single ‘zysj:租用时间,zyfy:租用费用
zysj = Val(Text1.Text)
If zysj <= 60 Then
zyfy = 0
ElseIf zysj <= 120 Then
zyfy = 1
ElseIf zysj <= 180 Then
_____________________
ElseIf zysj Mod 60 = 0 Then
zyfy = (zysj - 180) / 60 * 3 + 3
Else
zyfy = (Int((zysj - 180) / 60) + 1) * 3 + 3
End If
Label5.Caption = Str(zyfy)
End Sub
(1)在应用程序界面设计时,为添加“计费”按钮,应使用第2图所示的“控件工具箱”中的___(请填写相应编号),并在3图所示的“属性窗口”中,将____属性值设置为“计费”。



1图 2图 3图
(2)请根据题意将下列程序补充完整。
Private Sub Command1_Click()
Dim zysj As Single, zyfy As Single ‘zysj:租用时间,zyfy:租用费用
zysj = Val(Text1.Text)
If zysj <= 60 Then
zyfy = 0
ElseIf zysj <= 120 Then
zyfy = 1
ElseIf zysj <= 180 Then
_____________________
ElseIf zysj Mod 60 = 0 Then
zyfy = (zysj - 180) / 60 * 3 + 3
Else
zyfy = (Int((zysj - 180) / 60) + 1) * 3 + 3
End If
Label5.Caption = Str(zyfy)
End Sub
(加试题)一个简单的四则混合运算式子(算式中只包含整数、+、-、*、/、=)的运算规则是先进行“*”或“/”,再进行“+”或“-”,下列是用 VB编写的简单四则混合运算的程序,运行程序时在文本框 Text1 中输入四则运算式子,单击命令按钮 Command1,在标签Label1 中输出结果。程序界面及代码如下。请回答以下问题。
(1) 若在文本框 Text1 中输入式子“12*5-32/4+20=”,则运行程序后在标签 Label1 中显示的内容是_________。

(2) 请在划线①②③处填入合适的代码,让程序能实现计算功能。
Private Sub Command1Click
Dim a(1 To 100) As Single, b(0 To 100) As String
Dim s As String, c As String
Dim sz As Integer, i As Integer, k As Integer
s = Text1.Text:k = 0
For i = 1 To Len(s)
Do While c >= "0" And c <= "9"
sz= ①________
i = i + 1
c = Mid(s, i, 1)
Loop
k = k + 1: a(k) = sz: b(k) = c
End If
Do While k > 1 And ②________
If b(k - 1) = "+" Then a(k - 1) = a(k - 1) + a(k)
If b(k - 1) = "-" Then a(k - 1) = a(k - 1) - a(k)
If b(k - 1) = "*" Then a(k - 1) = a(k - 1) * a(k)
If b(k - 1) = "/" Then a(k - 1) = a(k - 1) / a(k)
b(k-1) = b(k)
k = k - 1
Loop
Next i
Label1.Caption = "运算的结果是:" + Str(a(1))
End Sub
Function yxj(x As String) As Integer
(1) 若在文本框 Text1 中输入式子“12*5-32/4+20=”,则运行程序后在标签 Label1 中显示的内容是_________。

(2) 请在划线①②③处填入合适的代码,让程序能实现计算功能。
Private Sub Command1Click
Dim a(1 To 100) As Single, b(0 To 100) As String
Dim s As String, c As String
Dim sz As Integer, i As Integer, k As Integer
s = Text1.Text:k = 0
For i = 1 To Len(s)
c = Mid(s, i, 1)
If c >= "0" And c <= "9" Then
sz = 0Do While c >= "0" And c <= "9"
sz= ①________
i = i + 1
c = Mid(s, i, 1)
Loop
k = k + 1: a(k) = sz: b(k) = c
End If
Do While k > 1 And ②________
If b(k - 1) = "+" Then a(k - 1) = a(k - 1) + a(k)
If b(k - 1) = "-" Then a(k - 1) = a(k - 1) - a(k)
If b(k - 1) = "*" Then a(k - 1) = a(k - 1) * a(k)
If b(k - 1) = "/" Then a(k - 1) = a(k - 1) / a(k)
b(k-1) = b(k)
k = k - 1
Loop
Next i
Label1.Caption = "运算的结果是:" + Str(a(1))
End Sub
Function yxj(x As String) As Integer
If x = "*" Or x = "/" Then
yxj = 1ElseIf x = "+" Or x = "-" Then
yxj = 2Else
③________End If
End Function某多选题共有6个候选项(A、B、C、D、E、F),得分规则是:全部答对得2分,部分答对得1分,未作答或有错误答案0分。设计一个能够评分的程序,要求如下:在文本框Text1中输入标准答案,在文本框Text2中输入学生答案。点击评分按钮Command1后,将得分显示在标签Label4中。程序界面如图所示:

(1)要使程序运行后,窗体Form1的标题栏中显示“评分”,正确的做法是_____ (单选,填字母:
(2)实现上述功能的程序如下,请在划线处填入合适的代码:
Private Sub Command1Click
Dim cans As String ,ans As String ,c As String ,count As Integer
Dim f(1 To 6) As Boolean
cans = Text1.Text:ans = Text2.Text
count = 0
For i = 1 To Len(cans)
c = Mid(cans, i, 1)
f(Asc(c) - 64) = True
Next i
For i = 1 To ①______
c = Mid(ans, i, 1)
If f(Asc(c) - 64) = False Then
count = 0: Exit For
Else
count = count + 1
End If
Next i
If count = 0 Then
Label4.Caption = "0分"
ElseIf ②______ Then
Label4.Caption = "2分"
Else
Label4.Caption = "1分"
End If
End Sub
(3)若去除加框处代码,且将文本框Text2的内容改为“BCD”,标签Label4显示的内容是_______。

(1)要使程序运行后,窗体Form1的标题栏中显示“评分”,正确的做法是_____ (单选,填字母:
A.将窗体的Text属性改为“评分”/ | B.在Form1_Load事件中输入代码Form1.Caption=”评分”/ | C.在Form1_Load事件中输入代码Form1.Name=”评分”); |
Private Sub Command1Click
Dim cans As String ,ans As String ,c As String ,count As Integer
Dim f(1 To 6) As Boolean
cans = Text1.Text:ans = Text2.Text
count = 0
For i = 1 To Len(cans)
c = Mid(cans, i, 1)
f(Asc(c) - 64) = True
Next i
For i = 1 To ①______
c = Mid(ans, i, 1)
If f(Asc(c) - 64) = False Then
count = 0: Exit For
Else
count = count + 1
End If
Next i
If count = 0 Then
Label4.Caption = "0分"
ElseIf ②______ Then
Label4.Caption = "2分"
Else
Label4.Caption = "1分"
End If
End Sub
(3)若去除加框处代码,且将文本框Text2的内容改为“BCD”,标签Label4显示的内容是_______。
下列VB程序段的功能为:生成n个不重复的随机整数,保存在数组a中,并升序排序。
Const n = 6
Dim a(1 To n) As Integer, f(1 To 10) As Boolean
Dim tmp As Integer, i As Integer, j As Integer, t As Integer
’f数组各元素的初值置为False,代码略
For i = 1 To (1)
t = Int(1 + Rnd * 10)
If Not f(t) Then
a(i) = t : f(t) = True
For j = (2)
If a(j) < a(j - 1) Then
tmp = a(j): a(j) = a(j - 1): a(j - 1) = tmp
End If
Next j
Else
(3)
End If
Next i
上述程序段3个方框处的表达式分别为
Const n = 6
Dim a(1 To n) As Integer, f(1 To 10) As Boolean
Dim tmp As Integer, i As Integer, j As Integer, t As Integer
’f数组各元素的初值置为False,代码略
For i = 1 To (1)
t = Int(1 + Rnd * 10)
If Not f(t) Then
a(i) = t : f(t) = True
For j = (2)
If a(j) < a(j - 1) Then
tmp = a(j): a(j) = a(j - 1): a(j - 1) = tmp
End If
Next j
Else
(3)
End If
Next i
上述程序段3个方框处的表达式分别为
A.(1)n - 1 (2)2 to i (3)i = i - 1 |
B.(1)n (2)i to 2 Step -1 (3)i = i - 1 |
C.(1)n - 1 (2)2 to i (3)t = Int(1 + Rnd * 10) |
D.(1)n (2)i to 2 Step -1 (3)t = Int(1 + Rnd * 10) |