(1)若有5批用户出发与到达楼层分别是“10-25、5-15、15-20、15-30、5-10”,按照上述电梯运行规则,则电梯本次运行的总时间为
(2)给划线处填上合适代码,使程序完整.
Dim a(1 To 10) As Integer, b(1 To 10) As Integer
Private Sub Command1_Click()
Dim i As Integer, time As Integer, k As Integer
Dim c(1 To 20) As Integer, nc As Integer
c(1) = a(1): nc = 1
For i = 1 To 9 '删除起点重复数据后添加到数组c
If a(i) <> a(i + 1) Then
nc = nc + 1
①
End If
Next i
For i = 1 To 10 '删除终点重复数据后添加到数组c
k = nc
Do While b(i) < c(k)
k = k - 1
Loop
If②
For j = nc To k + 1Step -1
c(j + 1) = c(j)
Next j
nc = nc + 1
c(j + 1) = b(i)
End If
Next i
time = (c(nc) - c(1)) * 3 + nc * 8
Text1.Text = “总时间--” + Str(time) + “秒”
End Sub
Private Sub Form_Load()
'生成10批人的起止楼层,分别给数组a和b,并在列表框list1输出,代码略.
For i = 1 To 9
For j = 10 To i + 1 Step -1
If a(j) < a(j - 1) Or③
t = a(j): a(j) = a(j - 1): a(j - 1) = t
t = b(j): b(j) = b(j - 1): b(j - 1) = t
End If
Next j
Next i
For i = 1 To 10
List2.AddItem Str(a(i)) + Str(b(i))
Next i
End Sub
相似题推荐
实现上述功能的VB程序如下,但加框处代码有错,请改正。
Const n 10
Private Sub Form Load()
'排序前数据存储在数组a中,并在文本框Text1中显示,代码略
End Sub
Private Sub Command1 Click()
Dim i As Integer, bottom As Integer
Dim a(1 To n) As Integer, j As Integer
i=1:bottom=n
Do While i< bottom
k =i
j=i+1
Do While<= bottom
If a(j)=a(k) Then
a(j)=a(bottom)
'(1)
bottom =bottom-1
ElseIf a(j)<a(k) Then
k=j
End If
j=j+1
Loop
If Then '(2)
t= a(i):a(i)=a(k):a(k)=t
End If
i=i+1
Loop
'排序后数据存储在数组a中,并在文本框Text2中显示
End Sub
【推荐2】小杰为学校教务处编写了一个排考场座位的VB程序,考场采用“6排5列”共30人的模式,程序执行后,考生的考号与姓名显示在列表框List1中,单击“考场座位”按钮,考场号与座位显示在Text1中,程序运行界面如图所示,数据表如图
实现上述功能的VB程序如下,请回答下列问题:
(1)程序中读取的数据库文件是
(2)当“Form_load() 事件处理过程运行结束后,变量x的值为
(3)请在划线处填入合适的代码
Dim sName(100) As String Dim kh(100) as string Private Sub Command1_Click() Dim y As Integer Dim start As Integer '考场第1位数据元素的下标 Dim pa As Integer '数据库导入VB时学生数据下标 Dim pb As Integer '考场座位数据下标 Dim i As Integer,j As Integer,k As Integer,m As Integer Dim kcsName(100) As String start = 1 pa = start recCount = x-1 If recCount Mod 30 <> 0 Then For i = 1 To y '将当前考生人数添加到30的整数倍 recCount = recCount +1 sName(recCount) = " " Next i End If For j = 1 To recCount / 30 pa = start pb = start For i = 1 To 30 kcsName(pb) = sName(pa) pb = pb +1 If i Mod 5 = 0 Then pa = start +i \5 Else End If Next i start = start +30 Next j Text1.Text = " " start = 1 For k = 1 To recCount /30 m = start Text1.Text = Text1.Text + "第" + Str(k) + "考场" + vbCrLf 'vbCrLf为换行标志符,实现Text1中内容换行显示 For i = 1 To 6 For j = 1 To 5 Text1.Text = Text1.Text +" " +kcsName(m) m = m +1 Next j Text1.Text = Text1.Text +vbCrLf Next i Text1.Text = Text1.Text +vbCrLf +vbCrLf Next k End Sub Private Sub form_load() Dim conn As New ADODB.Connection Dim rs As New ADODB.Recordset conn.ConnectionString = "provider=microsoft.ace.oledb.12.0;data source=" & App.Path & "/kaochang.accdb" conn.Open Set rs.ActiveConnection = conn rs.Open "select * from banji" x = 1 List1.AddItem " 考号 姓名" Do While Not rs.EOF ' kh(x) = rs.fields("kh") sName(x) = rs.fields("xm") List1.AddItem kh(x) + " " + sName(x) x = x + 1 rs.MoveNext Loop rs.Close End Sub |
图1 图2
编写“商品销售统计”程序功能如下:窗体加载时从数据库中读取商品的相关数据,对各商品类别总销量及名次进行统计,结果在列表框 List1 中显示;单击“查询”按钮 Command1, 按商品类别编号从小到大排列,同一类别商品按销量从大到小排序,在列表框 List2 中显示。程序运行界面如图3所示。
图3
(1) 阅读程序可知,gtype(b(3))的初始值为
(2) 请在划线处填入合适的代码。
Dim a(1 To 2000) As Integer, b(1 To 2000) As Integer, s(1 To 2000) As Integer
Dim gid(1 To 100) As Integer, t(1 To 2000) As Integer
Dim c(1 To 2000) As String, gtype(1 To 100) As String
Dim ts(1 To 100) As Integer '数组 ts 存储每个类别商品总销量
Dim k(1 To 2000) As Integer '数组 k 存储每个类别商品总数
Dim m As Integer, n As Integer
Private Sub Form_Load()
'从数据库读取 m 条记录中类别编号、商品类别数据分别存储在数组 gid、gtype 中
'从数据库读取n 条记录中类别编号、商品名称、商品销量数据分别存储在数组 b、c、s中,代码略
For i = 1 To n '统计各类别商品总销量及商品总数
k(b(i)) = k(b(i)) + 1
Next i
For i = 1 To m '计算各类别商品总销量的名次
p = 0
For j = 1 To m
If ts(i) < ts(j) Then p = p + 1
mc(i) = p + 1
Next j
Next i
List1.AddItem "类别 销量 名次"
For i = 1 To m
List1.AddItem gtype(i) + " " + Str(ts(i)) + " " + Str(mc(i))
Next i
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer, pos As Integer, tmp As Integer, p As Integer
p = 1
For i = 1 To m
a(i) = p
p = p + k(i)
Next i
For i = 1 To n
p = b(i)
t(a(p)) = i
a(p) = a(p) + 1
Next i
pos = 1
For i = 1 To m '对各类别商品按商品销量进行排序
For j = pos To pos + k(i) - 2
tmp =t(j): t(j) = t(p): t(p) = tmp
Next j
pos = pos + k(i)
Next i
List2.AddItem "类别 商品 商品销量"
For i = 1 To n
List2.AddItem
Next i
End Sub
Function f(head As Integer, tail As Integer) As Integer
Dim i As Integer, p As Integer
p = head - 1
For i = head To tail
If s(t(i)) > s(t(p)) Then p = i
Next i
f = p
End Function
Function geshi(s As String) As String '格式输出,代码略
End Function
(1)将数组元素d(1)到d(640)分为16段,如果每段恰好包含40个元素,采用选择法排序算法分别对每段中的元素进行排序,整个排序过程中,数组元素之间的比较次数是
(2)请在划线处填入合适的代码。
Const n=640 '参加统测总学生数
Const nc =16 '班级数
Dim class(1 To n) As Integer, sname(1 To n)As String, score(1 To n) As Integer
Dim b( To nc) As Integer '存储每个班级的参加统测人数
Dim c(1 To nc) As Integer
Dim d(1 To n)As Integer
Private Sub Form_Load()
'本过程读取每个参加统测学生的班级序号、姓名和统测成绩分别存储在数组class,sname和 score中并在List1中显示,代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer,j As Integer,k As Integer
For i = 1 To nc
b(i) = 0
Next i
For i = 1 To n '统计每个班级统测人数
Next i
k = 1
For i = 1 To nc
c(i) = k
k = k + b(i)
Next i
For i = 1 To n
k = class(i)
c(k) = c(k) + 1
Next i
For i = 1 To nc '对各班级按统测成绩进行排序
Call px
Next i
For i = 1 To n
List2.AddItem " " & class(d(i)) & " "& sname (d(i)) & " " & score(d(i))
Next i
End Sub
Private Sub px(head As Integer, tail As Integer)
Dim i As Integer, j As Integer, t As Integer
For i = head To tail - 1
For j = tail To i + 1 Step -1
If
t = d(j): d(j) = d(j - 1): d(j - 1) = t
End If
Next j
Next i
End Sub
在搭乘一次地铁后可以获得一张面额为本次地铁价格的优惠券,有效期为60分钟,在有效期内可以使用这张优惠券,免费搭乘一次票价不超过这张优惠券的公交车。在有效期内指开始乘公交车的时间与开始乘地铁的时间之差小于等于60分钟。搭乘地铁获得的优惠券可以累积,即可以连续搭乘若干次地铁后再连续使用优惠券搭乘公交车,但每次搭乘公交车只能使用一张优惠券。搭乘公交车时,如没有合适的优惠券,则自己全额支付;如果有多张优惠券满足条件,则优先消耗获得最早的优惠券。
小叶同学根据优惠政策,编写了计算优惠后需要支付费用的程序,同时将乘车记录按时间先后顺序逐行显示。在Text1里输入乘车记录的数量n,Text2里输入n组数据,每组乘车记录有3个数据,依次是车型(1表示地铁、2表示公交)、开始乘车时间、乘车票价。每个数据以逗号结尾。不会有两次乘车记录出现在同一分钟。数组d存储乘车记录的结构如图a所示:
第1条乘车记录 | 第2条乘车记录 | …… | |||||
数组中的位置 | 1 | 2 | 3 | 4 | 5 | 6 | …… |
对应的值 | 2 | 200 | 3 | 1 | 3 | 7 | …… |
车型 | 开始时间 | 票价 | 车型 | 开始时间 | 票价 | …… |
程序界面如图b所示:
图b
(1)在VB表达式Val(Text1.Text)中,Val、Text1、Text依次表示
(2)实现上述功能的程序如下,请在划线处填入合适的代码。
(3)程序中加框处代码有误,请改正。
Dim yh(1 To 100)As Integer,flag(1 To 100)As Boolean,dt As Integer
Dim d(1 To 100)As Integer’存储乘车的记录
Private Sub Command1_Click()
Dim i As Integer,j As Integer,k As Integer
Dim sum As Integer,n As Integer,c As String,s As String
n=Val(Text1.Text):s=Text2.Text:j=1:k=1
For i=1 To Len(s)
c=Mid(s,i,1)
If c="," Then
j=i+1:k=k+1
End If
Next i
For i=1 To n-1
For j=3*n-1 To
If d(j)<d(j-3)Then
temp=d(j+1):d(j+1)=d(j-2):d(j-2)=temp
temp1=d(j):d(j)=d(j-3):d(j-3)=temp1
temp2=d(j-1):d(j-1)=d(j-4):d(j-4)=temp2
End If
Next j
Next i
’按行输出乘车记录,代码略
dt=0
For i=1 To k-1 Step 3’yh(dt)存储第dt张优惠券的乘车记录在数组d中的起始位置
If d(i)=1 Then dt=dt+1:yh(dt)=i
Next i
sum=d(3)
For i=2 To n
For j=1 To dt
If yh(j)3<i Then
If(d((i-1)*3+1)=2)And(d((i-1)*3+2)-d(yh(j)+1)<=60)And flag(j)=False And()Then
flag(j)=True:Exit For
End If
End If
Next j
If j=dt+1 Then sum=sum+d(3*i)
Next i
Label1.Caption=Text1.Text+"次乘车支付的总费用是:"Str(sum)
End Sub
(1)有5堆果子重量分别是:17,15,16,16,19,则小明将5堆果子搬成1堆至少需要消耗体力值为
(2)请在①②③处填上合适代码,实现程序功能。
Dim n As Integer
Dim a(1 To 100) As Integer 'a数组存储各堆果子重量
Dim b(o To 100)As Integer 'b(0)存放a数组中最小值的下标,若a(i)是数组中最大数,则 b(i)的值为-1
Dim flag(l To 100)As Boolean
Private Sub Form_Load()
'初始化果子的数量n和每堆果子的重量a(i),并依此显示在列表框list1中,代码略
'初始化b数组的值均为-1,flag 数组的值均为False,代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer,k As Integer
Dim p As Integer,q As Integer,w As Integer
p =0
Do While True '生成b数组,标记升序后a(i)的下一个元素在a数组中的位置为b(i)
For i = 1 To n
If Not flag(i)Then k = i :Exit For
Next i
If i = n+1 Then Exit Do
i =1
Do While i <= n
If Not flag(i) And a(k) >a(i)Then k =i
i=i+1
Loop
b(p)= k
flag(k)=True
①
Loop
w= 0
p =b(0):q =b(p)
Do While b(p)< >-1
a(p)=a(p)+a(q)
w=②
If b(q)< >-1 Then b(0)= b(q)Else Exit Do
Call sort(p)
p = b(0) :q = b(p)
Loop
Text1.Text= Str(w)
End Sub
Sub sort(p As Integer) '将a(p)插入到合适位置
Dim pl As Integer,ql As Integer
pl = b(0)
If a(p)<=a(pl)Then
b(0)=p : b(p)= pl
Else
Do While a(p) >a(p1) And b(p1)< >-1
ql = pl : pl = b(pl)
Loop
If b(p1)=-1 And a(p) >a(p1) Then
b(pl)=p : b(p)=-1
Else
b(p)= pl :③
End If
End If
End Sub