原始数据 | 1201 | 2120 | 1009 | 1987 | 2009 |
第一趟 | 2120 | 1201 | 1009 | 1987 | 2009 |
第二趟 | |||||
第三趟 | 2120 | 2009 | 1987 | 1009 | 1201 |
第四趟 | 2120 | 2009 | 1987 | 1201 | 1009 |
实现上述功能的VB程序如下,但加框处代码有错,请改正。
Dim a(0 To 20)As Integer,d(0 To 20)As Integer
Dim n As Integer
Private Sub Command1_Click()
‘产生n个[10,99]之间的随机整数,存储在a(0 To n-1)中,同时显示在List1中,代码略
End Sub
Private Sub Command2_Click()
Dim i As Integer
n=Val(Text1.Text)
For i=0 To n-2
For j=i+1 To n-1
If Then ‘(1)
temp=a(i):a(i)=a(j):a(j)=temp
End If
Next j
Next i
If n Mod 2<>0 Then d(n\2)=a(n-1) ‘个数为奇数,最小值放中间位置
For i=0 To n\2—1
d(i)=a(i*2)
=a(2*i+1) ‘(2)
Next i
‘在列表框List2中输出数组d,代码略
End Sub
For i=1 To 3
k=i
For j=i+1 To 6
If a(j) > a(k) Then k=j
Next j
t=a(i):a(i)=a(k):a(k)=t
Next i
数组元素a(1)到a(6)的值依次为“8,2,9,3,5,1”,经过该程序段“加工”后,数组元素a(1)到a(5)的值依次为( )
i = 1
Do While i <= 5
If i = 0 or a(i -1) <= a(i) Then
i = i + 1
Else
t = a(i): a(i) = a(i -1): a(i -1) = t
i = i - 1
End If
Loop
数组元素a(0)到a(5)的值依次为“0,71,22,48,79,27”,经过该程序段“加工”后,数组元素a(4)的值为( )
以下为实现程序功能的VB代码,请在划线处填入合适的代码。
Private Sub Command1_Click ( )
Dim a (1 To 8) As Integer
Dim n, i, j, x As Integer
List1. clear
List2, Clear
a(1)=-5 :a(2)=3 :a(3)=4 :a(4)=12 :a(5)=20 :a(6)=45 :a(7)=70
For j=1 To 7
List1 AddItem Str (a(3))
Next j
x= Val(Text1. Text)
i=1
Do while x > a (i) And i < 8 ‘ 找x的插入位置
①
Loop
For j = 8 To i+1 Step-1
②
Next j
a(i)=x
For j = 1 To 8
List2 AddItem Str(a(3)
Next j
Label11. Caption ="插入的位置是" & ③
End sub
① ② ③
实现上述功能的VB程序如下,但加框处代码有错,请改正。
Dim a (1 To 10) As Integer
Dim mc (1 To 10) As Integer
Private Sub Form Load( )
‘ 随机产生10个[30, 60]之间的随机数,保存在数组a中,并输出到列表框List1
‘ 代码略
End sub
Private Sub Command1_Click( )
Dim i As Integer, 3 As Integer, k As Integer
For i = 1 To 10
k = 0
For j = 1 To 10
If Then ‘ ①
k=k+1
‘ ②
End If
Next j
Next i
For i = 1 To 10
List2.AddItem Str(a(i)) + " " + Str(mc(i))
Next i
End Sub
加框①处代码应改为。
加框②处代码应改为。
分数 |
100 |
99 |
98 |
97 |
96 |
95 |
94 |
… |
0 |
个数 (A数组) |
2 |
0 |
0 |
0 |
1 |
0 |
3 |
… |
0 |
名次 (B数组) |
1 |
3 |
4 |
… |
程序运行时,学生数据显示在列表框List1中,单击“计算”按钮Command1,计算结果显示在列表框List2中,程序运行界面如图所示。
实现上述功能的VB程序如下,请回答下列问题:
Dim sName (1To50) As string ‘ 存放学生姓名
Dim sScore (1To50) As Integer ‘ 存放学生分数
Dim recCount As Integer ‘ 存放学生人数
Private Sub Form_Load ( )
‘ 本过程从数据库中读取学生数据,存储在相应的变量中,并在List1中显示
‘ 代码略
End sub
‘ 整数转换成长度固定的字符串
Function ads (x As Integer, n As Integer) As string
Dim sx As String, nx As Integer, i As Integer
sx = Str (x):nx = Len (sx)
For i =1 To n-nx
sx = “”+ sx
Next i
①
End Function
Private Sub Command1_Click ( )
Dim A (0 To 100) As Integer ‘存放每个分数的个数
Dim B (0 To 100) As Integer ‘存放每个分数的名次
Dim mc As Integer, score As Integer, i As Integer
For i = 0 To 100
A(i) = 0
Next i
For i = 1 To recount ‘ 计算每个分数的个数
②
Next i
mc = 1
For i = 100 To 0 step -1 ‘ 计算每个分数的名次
If A(i) <> 0 Then
B(i) = mc
③
End If
Next i
List2. clear
List2. AddItem “姓名 分数 名次 ”
List2. Additem “------------------------------”
For i = 1 To recCount
score = sScore(i)
mc = B (sScore(i))
List2. AddItem sName(i) + ads ( score,5) + "第" + ads(mc,3) + "名”
Next i
End sub
① ② ③
For i=1To n\2
k=i
If a(j) <a(k) Then k=j
Next j
If i<>k Then
t=a(i):a(i)=a(k):a(k)=t
End If
If Then
t=a(j):a(j)=a(j+1):a(j+1)=t
End If
Next j
Next i
上述程序中方框处可选语句或表达式有:
①For j=i+1 To n-i+ 1 ②For j=i+1 To n-i
③a(j)<a(j+1) ④a(j)>a(j+1)
则(1)、(2)、(3)处语句依次是( )
实现上述功能的VB程序如下,但加框处代码有错,请改正。
Dim a(1 To 8)As Integer
Dim n As Integer
Private Sub Form_Load()
a(1)= 30:a(2)= 47:a(3)= 30:a(4)= 72
a(5)= 70:a(6)= 23:a(7)= 99:a(8)= 24
n = 8
For i = 1 To 8
List 1.Addltem a(i)
Next i
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer, k As Integer
Dim pos As Integer
Dim s As String
s = Text1.Text
pos = Val(Text1.Text)
For i = 1 To n- 1
For j = n To i+1 Step-1
If a(j)< a(j -1) Then
‘⑴
a(j-1)= a(j)
a(j)= k
'如果pos位置的数据参与交换,则更新pos值,记录pos变化位置
If pos = j Then
pos = j-1
s = s + " →" + Str(pos)
‘⑵
pos = j
s = s + " →" + Str(pos)
End If
End If
Next j
Next i
Label1.Caption = "位置变化情况:" +s
For i = 1 To n
List2.AddItem Str(a(i))
Next i
End Sub
⑴ ⑵
For i = 1 To 7
b(i) = 1
Next i
For i = 1 To 7
For j = 1 To i - 1
If a(i)>a(j) and b(i)<=b(j) Then
b(i) = b(j) + 1
End If
Next j
If b(i) > max Then max = b(i)
Next i
数组元素a(1)到a(7)的值依次“50,10,14,64,47,70,82”,执行该程序段后,变量max的值是( )
①按分数从高到低排序。若分数相同,则按学号进行升序排序。
②以班级为单位,排出从1号开始的机房座位表。章老师编写了一个位置编排功能的VB程序,在文本框Text1中输入班级名称,单击“读数据库”按钮Command1后,从数据库读取数据并显示在列表框List1中;单击“编排”按钮Command2,在列表框List2中输出学号、姓名、成绩和位置信息。运行界面如下图所示。
实现以上功能的 VB 程序如下,请回答下列问题:
Dim n As Integer
Dim xh(1 To 40) As Integer, xm(1 To 40) As String, cj(1 To 40) As Integer
Private Sub Command1_Click()
'本过程在文本框 Text1 中输入班级名称,从数据库中读取指定班级的学号、姓名和成绩的'数据分别存储在数组 xh,xm 和 cj 中
Dim conn As New ADODB.Connection
conn.ConnectionString = "provider=microsoft.ace.oledb.12.0;data source="
+ App.Path + "\js.accdb"
conn.Open
Dim rs As New ADODB.Recordset rs.ActiveConnection = conn
rs.Open "select * from 技术"
'本过程的其他语句略
End Sub
Private Sub Command2_Click()
Dim wz(1 To 40) As Integer
Dim i As Integer, j As Integer
List2.AddItem "学号" & " " & "姓名" & " " & "成绩" & " " & "位置"
For i = 1 To n
①
Next i
For i = 1 To n
For j = 1 To n
If ② Then wz(i) = wz(i) + 1
End If
Next j
List2.AddItem adj(Str(xh(i))) + adj(xm(i)) + adj(Str(cj(i))) + adj(Str(wz(i)))
Next i
End Sub
Function adj(c As String) As String '固定输出5个字符长度
Dim i As Integer
③
For i = 1 To 5 - Len(c)
adj = adj + " "
Next i
End Function
① ② ③
Const nc=20 ‘班级总数
Constn= 8
Dim a(1 To n*nc) As Single
Dim sum(1 To 4) As Single ‘存储每个团队的总分
Dim q(1 To nc) As Integer ‘存储演出时班级出现的顺序
Private Sub Form_Load()
‘本过程读取班级号和6个打分情况存储到a数组中。a(1)存储第一个上台的班级号,a(2)~a(7)中存储该班的6个得分,a(8)预留出来,用来存储该班最终得分,初值为0;a(9)存储第二个上台的班级号,a(10)~a(15)中存储第二个上台班级的6个得分,a(16)预留,用来存储该班最终得分,初值为0,以此类推。在List1中输出班级号和6个得分,代码略。
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer, k As Integer, s As String
For i=1 To n* nc ‘将每个班的6个得分排序
If i Mod n<>0 And i Mod n<>1 Then
k=i
For j=i+1 To
If a(j)>a(k) Then k=j
Next j
If k<>i Then t=a(k): a(k)=a(i): a(i)=t
End If
Next i
For i=1 To n* nc Step n ‘计算每个班的最终得分,存入相应位置
a(i+n-1)=(a(i+2)+a(i+3)+a(i+4)+a(i+5))/4
Next i
For i=1 To n* nc Step n ‘计算每个团队总分
Next i
For i=1 To n* nc Step n
k=a(i)
q(k)=i
Next i
For i=1 To nc
List2.Addltem Str(i)&" "&
Next i
s="甲:"+Str(sum(1))+"乙:"+Str(sum(2))+"丙:"+Str(sum(3))+"丁:"+Str(sum(4))
Label3.Caption=s
End Sub
①将旅行团的旅行时间按照“到达时间”为主要关键字,“返回时间”为次要关键字升序排序。排好序的时间段是[3,6]、[3,8]、[5,10]、[8,15]、[10,18]、[13,18],[14,20]、[18,25].
②从前往后遍历时间段,选择“到达时间”不大于“限流开始时间”的时间段,若有多个时间段满足条件,且时间段未超出限流时间,应选择“返回时间”最大的时间段,选择的时间段是[3,8]。
③缩小限流时间[8,19],重复步骤 2,选择满足条件的时间段是[8,15],缩小限流时间[15,19],重复步骤 2,选择满足条件的时间段是[14,20],结束时间已超过限流终止时间,结束。
④若在遍历时间过程中出现“到达时间”大于“限流开始时间”,景点不能每天接待旅客,则没有满足条件的旅行社。
小王编写VB程序,程序界面如下所示,单击“排序”按钮,将旅行团的时间按照“到达时间”为主要关键字,“返回时间”为次要关键字升序排序,在Text1和Text2中输入限流的起始时间和终止时间,单击“满足条件的旅行团”按钮,在列表框输出满足条件的旅行团的时间,若没有满足条件的旅行社,则在列表框输出“没有满足条件的旅行团!”
回答下列问题:
Dim i As Integer, j As Integer, n As Integer, t As Integer Dim a(100) As Integer, b(100) As Integer
Private Sub Command1_Click()
'将旅行团个数存入n,加载n个旅行团的起始时间、终止时间并分别放在数组a和数组b中,代码略
For i = n to 2 step -1
j=1
Do while
If a(j) > a(j + 1) Or a(j) = a(j + 1) And b(j) > b(j + 1) Then
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
j=j+1
Loop
Next i
'输出排好序的时间段,代码略
End Sub
Private Sub Command2_Click()
Dim arrivetime As Integer, leavetime As Integer
start = Val(Text1.Text): ending = Val(Text2.Text)
For i = 1 To n
arrivetime = start
If a(i) <= arrivetime Then
If b(i) > leavetime Then leavetime = b(i): t=i
IfThen
List2.AddItem Str(a(t)) & "---" & Str(b(t)) Exit For
End If
Else
If start < arrivetime or i = 1 Then
List2.Clear
List2.AddItem "没有满足条件的旅行团!"
Exit For
End If
List2.AddItem Str(a(t)) & "---" & Str(b(t))
i = i – 1
End If
Next i
End Sub
For i=8 To 2 Step-1
For j=i-2 To 1 Step -2
If a(j)<a(i) And i Mod 2=1 Then
t=a(j):a(j)=a(i):a(i)=t
ElseIf a(j)>a(i) And i Mod 2=0 Then
t=a(j):a(j)=a(i):a(i)=t
End If
Next j
Next i
数组元素a(1)到a(8)的值依次为20、15、62、26、74、64、 20、32,执行该程序段后,数组元素的值依次是:( )
Private Sub Search_Click()
Const n = 12
Dim s As String, c As String
Dim i As Integer, t As Integer
Dim rs(0 To n) As Integer '数组rs存储班级人数
Dim bj(1 To n) As Integer '数组bj存储班级编号
Dim flag As Boolean
s = Text1.Text
t = 0
For i = 1 To Len(s)
c = Mid(s, i, 1)
If c >= "0" And c <= "9" Then
t = ①
flag = True
ElseIf flag = True Then
rs(t) = rs(t) + 1
flag = False
t = 0
End If
Next i
For i = 1 To n
bj(i) = i
Next i
For i = 1 To n-1
k = i
For j = i + 1 To n
If ② Then k = j
Next j
If k <> i Then
t = rs(k): rs(k) = rs(i): rs(i) = t
t = bj(k): bj(k) = bj(i): bj(i) = t
End If
Next i
For i = 1 To n
List1.AddItem Str(bj(i)) + "班有:" + " " + + "人"
Next i
End Sub
① ②
图1
例如某天的销售清单,库存数据如图2所示,根据每本书的警戒1和警戒2库存,分组后的数据如图3所示。
图2
图3
Dim stock(1 To 52) As Integer '存储每本书警戒1和警戒2的库存数量
Dim num(1 To 100) As Integer '存储每本书每次的销售数量
Dim bm(1 to 26) As String '存储每本书的书名编码
Dim kc(1 To 26) As Integer '存储每本书的库存数量
Dim sell(1 To 26) As Integer,q(1 To 26) As Integer
Private Sub Form_Load()
'从数据库读取书目销售清单数据,显示在list1中,分别存在数组
'stock(1),stock(2)存书名编码A的警戒1库存,警戒2库存;stock(3),stock(4)存书名编码B的警戒1库存,警戒2库存,依次类推,代码略
End sub
Private Sub Command1_Click()
For i = 1 To 100 '处理100条销售清单数据
k = Asc(bm(i)) - 64
Next i
n = 0
For i = 1 To 26 '更新库存数据
If sell(i) > 0 Then
n = n + 1
kc(i) = kc(i) - sell(i)
End If
Next i
head = 0: tail = n + 1: j = 1
Do While j < tail
r = kc(q(j))
If r <= stock(2 * q(j) - 1) Then
head = head + 1
If Then t = q(head): q(head) = q(j): q(j) = t
j = j + 1
ElseIf r > stock(2 * q(j)) Then
tail = tail - 1
t = q(j): q(j) = q(tail): q(tail) = t
Else
j = j + 1
End If
Loop
'分组排序及排序后数据显示在列表框list2中,代码略
End Sub
实现上述功能的VB程序如下,但加框处代码有错,请改正。
Const n=10
Dim b(1 To n)As Integer
Private Sub command1_Click( )
Dim i As Integer
Dim t As Integer
For i=1 To
For j=i To
If b(j)<b(i) Then
t=b(i):b(i)=b(j):b(j)=t
End If
If b(j)>b(n-i+1) Then
t=b(j):b(j)=b(n-i+1):b(n-i+1)=t
End If
Next j
Next i
For i=1 To n
List2.AddItem Str(b(i))
Next i
End Sub
Private Sub Form_Load( )
For i=1 To 10
b(i)=1+Int(Rnd*100)
List1.AddItem Str(b(i))
Next i
End Sub
为实现上述功能,请在划线处填入合适的代码。
Private Sub Command1_ Click()
Dim a(0 To 9) As Integer, s As String
Dim k As String, i As Integer, max As Integer
s=Text1. Text
List1. Clear
For i=1 To Len(s)
k=Mid(s, I, 1)
If k >=“0”And k <=“9”Then
End If
Next i
max=0
For i=0 To 9
If Then
max= i
End If
List1. AddItem Str(i) &“出现了:”& a(i) &“次”
Next i
Label1. Caption=“出现次数最多的数字是:”&. Str( max)
End Sub
i=1
Do While i<=3
k= i
j =i+1
Do While j<=5
If a(j) < a(k) Then k = j
j=j+1
Loop
If i<>k Then t=a(i):a(i)=a(k):a(k)=t
End If
i=i+1
Loop
数组元素a(1)到a(5)的值依次为“17,87,36,22,45”,则该程序段运行后,数组元素a(1)到a(5)的数据依次是( )