Dim xse(1 To 3000) As Long '存储销售员工的销售量,最大处理个数为3000
Dim xm(1 To 3000) As String '存储销售员工的姓名
Dim mc(1 To 3000) As Integer '存储销售员工的名次
Dim num As Integer '当前员工总数
Private Sub Form_Load()
'将销售量、姓名数据存入xse和xm数组
'计算员工总数num
'代码略
End Sub
Private Sub Command1_Click()
Dim sum As Long
Dim i As Integer, flag As Integer
pm = Val(Text2.Text)
dq = Text1.Text
sum = 0
For i = 1 To num
sum = sum + xse(i)
Next i
For i = 1 To pm '对员工销售量进行排序
For j = To i + 1 Step -1
If xse(j - 1) < xse(j) Then
t = xse(j - 1): xse (j - 1) = xse(j): xse(j) = t
st = xm(j - 1): xm(j - 1) = xm(j): xm(j) = st
End If
Next j
Next i
mc(1) = 1
For i = 2 To pm
If Then
mc(i) = mc(i - 1)
Else
mc(i) = i
End If
Next i
List1.Clear
List1.AddItem "排名" + "姓名" + "销售量"
For i = 1 To pm
List1.AddItem Str(mc(i)) + " " + xm(i) + " " + Str(xse(i))
Next i
List1.AddItem dq + "平均销售额约为:" +
End Sub
排序前 |
86 |
71 |
5 |
41 |
81 |
79 |
37 |
89 |
排序后 |
5 |
37 |
41 |
71 |
79 |
89 |
86 |
81 |
实现上述功能的VB程序如下,但加框处代码有错,请改正。
Const n=8
Dim a(1 To n) As Integer
Private Sub Command1_Click()
Dim i As Integer,j As Integer,k As Integer,t As Integer
Dim flag As Boolean
‘读取一组正整数,存储在数组a中。代码略
For i=1 To n-1
‘(1)
If IsPrime(a(k))Then flag=True Else flag=False
For j=i+1 To n
If IsPrime(a(i))Then
If Then ‘(2)
k=j
flag=True
End If
End If
Next j
If k<>i Then
t=a(k):a(k)=a(i):a(i)=t
End If
If Not flag Then Exit For ‘Exit For表示退出循环
Next i
‘依次输出排序后的数据。代码略
End Sub
Function IsPrime(m As Integer)As Boolean
‘本函数判断m是否是素数:是素数返问值为True,不是素数返回值为False
‘代码略
End Function
i =1:j=2
Do While j <= 10
If j < 10 Then
If a(j) > a(j + 1) Then j = j + 1
End If
If a (i) > a(j) Then
temp =a (i): a(i) = a(j): a(j) = temp
i=j
j=2*i
Else
Exit Do
End If
Loop
Text1.Text =a (2)
已知数组元素a(1)到a(10)的原始数据为“20, 3, 10, 17,18, 15, 16, 19, 21, 30”,执行该代码后,文本框Text1中显示内容是:( )
实现上述功能的VB程序如下:
Dim a(1 To 20) As Integer
Dim n As Integer
Private Sub Text1_KeyPress(KeyAscii As Integer)
‘将输入各队员身高分别存入数组a中,队员个数为n,代码略!
End Sub
Private Sub Command1_Click()
Dim c(1 To 20) As Integer
Dim right As Integer, left As Integer, i As Integer
For i = 1 To n – 1
For j =1 To n-i
If ① Then
t = (j): a(j) = a(j + 1): a(j + 1) = t
End If
Next j
Next i
‘下列程序段实现数组C的合唱队列
m = (1 + n) \ 2
left = m: right = m
c(m) = a(n)
i = 2
Do While i <= n
If i Mod 2 = 0 Then
right = right + 1
c(right) = a(n-i+1)
Else
②
c(left) = a(n-i+1)
End If
i = i + 1
Loop
s = ③
For i = 2 To n
s = s + "," + Str(c(i))
Next i
Text2.Text = s
End Sub
以上程序段运行时,为了实现上述功能,划线处应填入的代码为:
① ; ②; ③。
Dim a(1 To 5)As Integer, i As Integer, j As Integer key As Integer
a(1)=8:a(2)=13:a(3)=25:a(4)=98:a(5)=56
For i=4 To 5
j=i: Key a(j)
Do While a(j-1)>Key and j>
a(j)=a(j-1)
j=j-1
Loop
a(j)=Key
Next i
执行该程序段后,数组元素a(1)~a(5)的值是( )
Dim n As Integer
Dim a(1 To 100) As Integer
’n=10,排序前生成的数据存储在数组a中,并在列表框List1中显示,代码略
Private Sub Command1_Click()
Dim i As Integer, j As Integer, start As Integer, t As Integer
i=2
Do While i < n start=n
For j=n To i Step-1
IfThen
t=a(j):a(j)=a(j-1):a(j-1)=t
End If
Next j
i=start+1
Loop
For i=1 To n
List2.AddItem
Next i
End Sub
a(1)=6:a(2)=8:a(3)=7:a(4)=3:a(5)=1:a(6)=2:a(7)=5:a(8)=4
i = 1: j = 8
key = a(1)
Do While i < j
Do While i < j And a(j) >= key
j = j - 1
Loop
a(i) = a(j)
Do While i < j And a(i) <= key
i = i + 1
Loop
a(j) = a(i)
Loop
a(i) = key
For i = 1 To 8
Label1.Caption=Label1.Caption++Str(a(i))
Next i
执行该程序段,标签Label1上显示的内容是( )
Private Sub Command2_Click()
Dim i As Integer, j As Integer, tmp As Integer
Dim s1 As String, t As Integer, s2 As String
t=1
For i=1 To n-2
For j= To n Step 2 ‘改错
If a(i)*t>a(j)*t Then
tmp =a(i): a(i)= a(j): a(j)=tmp
End if
Next j
‘填空①
Next i
For i =1 To n
If Then ‘填空②
s1 =s1 Str(a(i))
Else
s2=s2+Str(a(i))
End If
Text2. Text=“奇数位:”+s1
Text3. Text=“偶数位:”+s2
End Sub
回答以下问题:
n = 8
For i = 1 To n
a(i) = Int(Rnd() * 10) + 1 Next i
For i = 1 To n \ 2
If a(i) < a(i + 1) Then p = i: q = i + 1 Else p = i + 1: q = i For j = i + 2 To n - i + 1
If a(j) < a(p) Then q = p: p = j
ElseIf a(j) < a(q) Then q = j
End If Next j
If i <> p Then t = a(p): a(p) = a(i): a(i) = t
If i = q Then q = p
If n - i + 1 <> q Then t = a(q): a(q) = a(n - i + 1): a(n - i + 1) = t
Next i
执行该程序段后,a(1)~a(8)各元素可能的值为( )。
例如,读取的数据为 2、3、15、25、10、14、1、5、30、60、15、25,过程是:
⑴设置区间信息为[2,3],[15,25],[10,14],[1,5],[30,60],[15,25];
⑵按区间左端点升序排序,得到J区间信息为
[1,5],[2,3],[10,14],[15,25],[15,25],[30,60],[15,25];
⑶合并区间,得到[1,5],[10,25],[30,60]。说明:区间[1,5]和[2,3]合并为[1,5],区间[10,14]和[15,25]合并为[10,25],区间[10,25]和[15,25]合并为[10,25],因此合并后的结果为:
[1,5],[10,25],[30,60]三个区间。
程序功能如下:单击“读数据库”按钮Command1,程序从数据库读取数据,输出在文本框Text1中;单击“开始处理”按钮Command2,程序进行区间排序,并进行区间合并操作,操作后的结果输出在文本框Text2中。程序运行结果如图所示。
实现上述功能的VB程序如下,请回答下列问题:
Dim a(l To 100) As Integer ′数组a存储合并前的区间
Dim b(l To 100) As Integer ′数组b存储合并后的区间
Dim n As Integer ′n表示区间个数
Private Sub Command1_Click()
Dim s1 As String, i As Integer
′读取数据,并存储到数组a中,并输出在文本框Text1中,代码略
End Sub
Private Sub Command2_CIick()
Dim s2 As String, i As Integer, j As Integer, k As Integer
Dim n As Integer, t As Integer, x As Integer
For i=1 To n-1
For j=1 To 2 * n-2 * i Step 2
If ① Then
t=a(j): a(j)=a(j+2): a(j+2)=t
t=a(j+1): a(j+1)=a(j+3): a(j+3)=t
End If
Next j
Next i
k=2
b(1)=a(1): b(2)=a(2)
i=2: j=3
Do While j <=2 * n
If b(i) >=a(j) Then
If b(i) <=a(j+1) Then ②
Else If b(i)+1=a(j) Then
b(k)=a(j+l)
Else
k=k+1:③
k=k+1: b(k)=a(j+1)
i=i+2
End If
j=j+2
Loop
For x=1 To k-2 Step 2
s2=s2 & “[”& b(x) & “,” & b(x+1) & “]” & “,”
Next x
s2=s2 & “[” & b(x) & “,” & b(x+1) & “]”
Text2.text=s2
End Sub
用户从Text1中输入计划人数,单击“入围划线”按钮Command1,面试分数线显示在文本框Text2 中,入围面试最终人数显示在 Text3中,进入面试考生的考号和笔试成绩显示在List2列表框中,如果成绩相同,则按考号从小到大的顺序显示。程序界面如图所示。
Dim kh(1 To 500) As String, cj(1 To 500) As Integer
Dim n As Integer ′参加考试总人数
Private Sub Form_Load()
Dim conn As New ADODB.Conncction
Dim rs As New ADODB.Recordset
conn.ConnectionString = “Provider=Microsoft.ACE.OLEDB.12.0;datasource=”+App.Path + ”\BSCJ.accdb”
conn.Open
Set rs.ActiveConnection = conn
rs.Open “select * FROM scoreinfo”
′本过程其他代码略
End Sub
Private Sub Commandl_click()
Dim m As Integer, i As Integer, j As Integer
Dim t1 As Integer, t2 As String, flag As Boolean
For i = 1 To n - 1
For j = 1 To
If cj(i) < cj(j) Then
t1 = cj(i): cj(i) = cj(j): cj(j) = t1
t2 = kh(i): kh(i) = kh(j): kh(j) = t2
EleIf ① Then
t2 = kh(i): kh(i) = kh(j): kh(j) = t2
End If
Next j
Next i
m = ②
If m <= n Then
i = m
flag = Flase
Do While i < n And Not flag
If cj(i) = cj(i + 1) Then
i = i + 1
Else
③
End If
Loop
Text2.Text = Str(cj(m))
Text3.Text = Str(i)
For j = 1 To i
List2.Addltem kh(j) + “ ” + Str(cj(j))
Next j
Else
Text2.Text = “面试人数超过了总人数”
End If
End Sub
① ② ③
s=Text1.Text
n=Len(s)
For i=1 To n
y(i)=1
Next i
For i=1 To
For j= To n
If Then
y(j)=y(j)+1
Else
y(i)=y(i)+1
End If
Next j
Next i
上述程序段3个方框处的表达式分别为( )
数组元素f(1)到f (8)赋初值为0,代码略
Key = Int(Rnd*7)*2+3
i =1:j=8:c=0
Key = Val(Text1.Text)
Do While i<=j
m=(i+j)\ 2
f(m) = 1
If Key <= a(m) Then j =m-1 Else i=m+1
For n=1 To 8
c=c+f(n)
Next n
数组元素a(1)到a(8)的值依次为“3,7,9,10,15,15,15,20”,执行该程序段后,则( )
实现上述功能的代码如下。请回答下列问题:
Dim xh(0 To 100) As String .
Dim cj(0 To 100) As Integer
Const num = 50
Private Sub Form_ Load ()
‘本过程从数据库读取每位学生的学号和成绩存放在数组xh和cj中,代码略
End Sub
Private Sub Com1_Click ()
Dim i As Integer, m As Integer, n As Integer, k As Integer, a As Integ
a = Val(Text1.Text)
For i=1 To num-1
k=
If k<>i Then
t=cj(k):cj(k)=cj(i):cj(i)=t
s=xh(k):xh(k)=xh(i):xh(i)=s
End If
Next i
m=a-1:n=a+1
Do While cj(m) = cj(a)
m=m-1
Loop
Do While cj(n) = cj(a)
n=n+1
Loop
If m<>0 And Then lq = m Else lq=n-1
Label5.Caption = Str(lq)
Label6.Caption = Str(cj(lq))
List1.AddItem “字号”+“学号”+“成绩”
For i=1 To lq
List1.AddItem Str(i) +“ ”+xh(i)+Str(cj(i))
Next i
End Sub
Function imax(x As Integer, y As Integer) As Integer
Dim i As Integer,j As Integer
i=x
For j=x+1 To y
If Then i=j
Next j
imax = i
End Function
nums = [3, 1, 2, 4, 5, 6]
k = n - 1
for i in range(n - 1):
for j in range(k):
if (nums[j] > nums[j + 1]):
nums[j], nums[j + 1] = nums[j + 1], nums[j]
ex_flag = True
if (ex_flag):
break
print(nums)
VB程序运行界面如图所示,在文本框Text1中输入查询的等级,单击“查询”按钮Command1,在列表框List1中显示所有该等级的学生学号和姓名,并按照学号从小到大排序,并在标签Label2 处显示学生的人数,如果人数为0,则在列表框中显示“没有该等级的学生”。按此要求编写程序如下,在划线处填上合适的代码。
Private Sub Command1_Click()
Dim stuna(1 To 100) As String '存放学生姓名的数组定义为stuna
Dim stunum(1 To 100) As String '存放学生学号的数组定义为stunum
Dim i As Integer, j As Integer, n As Integer
Dim t As String
Dim cn As New ADODB. Connection
'连接数据库
Dim rs As New ADODB. Recordset
Dim strSQL As String
cn.ConnectionString =“Provider=Microsoft. ACE. OLEDB. 12. 0; Data Source=”+App. Path+“\stugrade. accdb”
cn. Open
strSQL=“select * from where语文等级=‘ ”+Text1. Text+“’”
Set rs. ActiveConnection= cn
rs. Open strSQL
n=0
Do While Not rs. EOF
stuna(n)= rs. Fields(“姓名”). Value
stunum(n)=rs. Fields(“学号”). Value
rs. MoveNext
Loop
rs.Close
cn.Close
Set rs= Nothing
Set cn= Nothing
List1. Clear '清除列表框
If n=0 Then
List1. AddItem“没有该等级的学生”
Else
For i=1 To n-1 '按学号排序
For j=n To Step - 1
If Then
t= stunum(j) : stunum(j) =stunum(j- 1) : stunum(j- 1)=t
t= stuna(j) : stuna(j) = stuna (j- 1) : stuna(j- 1)=t
End If
Next j
Next i
For i=1 To n
List1. AddItem stunum(i)+“”+stuna(i)
Next i
Label2. Caption=“该等级的学生共有”+Str(n)+“名”
End If
End Sub
Private Sub Command1_Click()
Dim a(1 To 100) As String, x As String, st As String
Dim i As Integer, j As Integer, n As Integer
x = Text1.Text
n = Len(Text1.Text)
For i = 1 To n
a(i) = Mid(x, i, 1)
Next i
For i = 1 To n - 1
For j = n To i + 1 Step -1
If a(j) > a(j - 1) Then
st = a(j): a(j) = a(j - 1): a(j - 1) = st
End If
Next j
Next i
st = “ ”
For i = 1 To n
st = st + a(i)
Next i
Label1.Caption = st
End Sub
程序运行时,在文本框Text1中输入“Text”(不包含双引号),单击按钮Command1,则在标签Label1上显示的内容为( )
For i=1 To 3
For j=i+1 To 5
If a(j) > a(i) And a(j)>60 Then
t=a(j):a(j)=a(i):a(i)=t
End If
Next j
Next i
数组元素a(1)到a(5)的值依次为“33,16,68,45,77”,经过该程序段“加工”后,数组元素a(1)到a(5)的值依次是( )