相关试卷
-
1、如下代码将记录集rs中“售价”字段的数据通过循环依次存入数组a中。
i=0
Do While Not rs. EOF
i=i+1
a(i)=rs. Fields("售价")
rs. MoveNext ‘①
Loop
若记录集rs共有10条记录,执行循环前,当前记录为第1条。循环结束后,①处代码共执行的次数为( )
A、8次 B、9次 C、10次 D、11次 -
2、通过ADO的Recordset对象,实例rs打开了如下表所示的记录集:
序号
书名
作者
售价
数量
1
水浒传
施耐庵
20.4
10
2
西游记
吴承恩
18.2
15
3
红楼梦
曹雪芹
25.6
20
4
三国演义
罗贯中
23.8
18
当前记录是第2条,要用Fields集合返回第3个字段的信息,正确的表示是( )
A、rs. Fields(0) B、rs. Fields(1) C、rs. Fields("作者") D、rs. Fields("售价") -
3、通过ADO的Recordset对象从数据库中获取数据,有以下程序段:
Dim rs As new ADODB. Recordset
Set rs.ActiveConnection=conn
rs.open "select*from s_info"
记录集rs成功打开后,获取的数据为( )
A、数据库中的所有表的数据 B、数据库中表“s_info”里的所有记录 C、数据表中“s_info”里的某一条记录 D、数据库中任意一张表的所有记录 -
4、n个数据的冒泡排序需要经过n-1遍的加工,每一遍加工都自下而上比较相邻的两个数据,把较小者交换到上面,在第i遍加工过程中需要进行n-i对数据的比较。在某些情况下,第i遍加工过程中,在上面部分较小的数据已经有序的情况下,不需要再进行n-i对数据的比较,如对“17,18,19,24,23,20”这6个数据排序时,第1遍排序结束后的数据为“17,18,19,20,24,23”,那么第2遍排序时就不再需要对20及其前面3个数据进行比较。以下程序实现了冒泡排序的优化,其程序运行界面如图所示,但加框处代码有误,请改正。
Dim n As Integer
Dim a(1 to 10)As Integer
Private Sub Form_Load( )
‘n=10,排序前生成的数据存储在数组a中,并在列表框List1中显示
‘代码略
End Sub
Private Sub Command1_Click( )
Dim i,j As Integer
Dim start As Integer
‘①Do While i<n
start=n
For j=n To i Step-1
If a(j)<a(j-1)Then
t=a(j):a(j)=a(j-1):a(j-1)=t
start=j
End If
Next j
‘②Loop
For i=1 To n
List2.AddItem Str(a(i))
Next i
End sub
以上程序段运行时,为了实现上述功能,加框处代码应改正为:①;②。
-
5、小吴为了研究冒泡排序过程中数据的“移动”情况,编写了一个VB程序,功能如下:在列表框List1中显示排序前的数据(存储在数组a中),在文本框Text1中输入初始位置(即下标值),单击“排序”按钮Command1后,在标签Label1中显示指定初始位置的数据在排序过程中的位置变化情况,排序后的数据显示在列表框List2中。程序运行界面如图所示。
实现上述功能的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
List1.AddItem a(i)
Next i
End Sub
Private Sub Command1_Click( )
Dim i,j,k,pos As Integer
Dims As String
s=Text1.Text
pos=Val(Text1.Text)
For i=1 To n-1
For j=n
If a(j)<a(j-1)Then
k=a(j-1):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
(1)、程序中语句“List2.AddItem Str(a(i))”用于将数组元素在List2中显示出来。类似的,可以使用“List2.Removeltem2”删除List2中的第2项(项号从0开始),则Removeltem是(单选,填字母:A .事件名/B .属性名/C .方法名/D .对象名)。(2)、请将程序代码中的画线处语句补充完整。(3)、程序代码中加框处有误,请改正。(4)、程序代码“pos=j-1”表明该元素是和它的一项发生了位置交换(单选,填字母:A .前/B .后/C .没有)。 -
6、有如下VB程序段:
n=Val(Text1.Text)
For i=1 To n
a(i)=i
Next i
For i=1 To n/2-1
For j=n To 2*(i+1)Step-2
If ① Then
t=a(j):a(j)=a(j-2):a(j-2)=t
End If
Next j
For j=1 To n-i*2-1 Step 2
If ② Then
t=a(j):a(j)=a(j+2):aj+2)=t
End If
Next j
Next i
当n为8时,上述程序段的运行结果a(1)至a(8)的值分别为1,8,3,6,5,4,7,2,则画线处应填入的代码分别为( )
A、a(j)<a(j-2),a(j)<a(j+2) B、a(j)<a(j-2),a(j)>a(j+2) C、a(j)>a(j-2),a(j)<a(j+2) D、a(j)>a(j-2),a(j)>a(j+2) -
7、有如下VB程序段:
For i=6 To 4 Step-1
j=1
Do While j<=i-1
If a(j)>a(j+1)Then
t=a(j):a(j)=a(j-1):a(j-1)=t
End If
j=j+1
Loop
Next i
若数组元素a(1)到a(6)的值依次为“26,13,23,18,7,14”,则执行该程序段后,数组元素a(1)到a(6)的值依次为( )
A、26,13,23,18,7,4 B、13,7,14,18,23,26 C、7,13,14,18,23,26 D、26,23,18,14,13,7 -
8、某排序算法的VB程序段如下:
For i=1 To 2
For j=2 To7-i
If a(j-1)>a(j)Then
t=a(j):a(j)=a(j-1):a(j-1)=t
End If
Next j
Next i
若数组元素a(1)到a(6)的值依次为“8,2,9,3,5,1”,则经过该程序段“加工”后,数组元素a(1)到a(6)的值依次为( )
A、2,8,3,5,1,9 B、2,3,5,1,8,9 C、2,3,1,5,8,9 D、2,1,3,5,8,9 -
9、有10个数据:56,45,43,34,26,76,90,13,15,21依次存放在数组a(1)到a(10)中,部分VB程序段如下所示:
n=Val(Text1.Text)
ans=0
For i=1 To n-1
For k=n To i+1 Step-1
If a(k)>a(k-1)Then
tmp=a(k):a(k)=a(k-1):a(k-1)=tmp
ans=ans+1
End If
Next k
Next i
Text2.Text=Str(ans)
在文本框Text1中输入“8”,则在文本框Text2中输出的值是( )
A、2 B、11 C、4 D、-77 -
10、有如下VB程序段:
s=" "
For i=1 To 3
For j=1 To 8-i
If a(j)<a(j+1)Then
t=a(j):a(j)=a(j+1):a(j+1)=t
End If
Next j
s=Str(a(i))+s
Next i
若数组元素a(1)到a(6)的值依次为“32,48,24,76,38,17,64,52”,则经过该程序段“加工”后,s的值为( )
A、38,76,48 B、48,76,38 C、17,24,32 D、76,64,52 -
11、有如下VB程序段:
For i=1 To 2
j=1
Do While j<6-i
If a(j)<a(j+1)Then
t=a(j):a(j)=a(j+1):a(j+1)=t
End If
Loop
Next i
若数组元素a(1)到a(6)的值依次为“71,54,58,29,31,78”,则经过该程序段“加工”后,数组元素a(1)到a(6)的值依次为( )
A、29,31,54,58,71,78 B、78,71,58,54,31,29 C、54,29,31,58,71,78 D、71,58,54,78,31,29 -
12、小明对教材上的冒泡算法进行优化,当数据已经有序时就停止加工,为此他编写了一个VB程序,功能如下:运行程序时,在列表框List1中显示排序前的数据,单击“排序”按钮Command1,在列表框List2中显示这些数据按升序排序后的结果,在标签Label1中显示排序过程的加工遍数,在标签Label2中显示排序过程的数据交换次数。运行效果如图所示。
实现上述功能的VB代码如下,但加框处代码有误,请改正。
Const n=10
Dim a(1 To n)As Integer
Private Sub Form_Load( )
‘排序前的数据存储在数组a中,并在List1中显示,代码略
End Sub
Private Sub Command1_Click( )
Dim flag As Boolean
Dim x As Integer, y As Integer
x=0:y=0
flag=True:i=1
Do While i<=n-1 And flag
flag=False
For j=n To i+1 Step-1
If
Then ‘①t=a(j)
a(j)=a(j-1)
a(j-1)=t
flag=True
‘②End If
Next j
y=y+1
‘③Loop
Label1.Caption="经过"+Str(y)+"遍排序数据有序!"
Label2.Caption="数据总共交换"+Str(x)+"次!"
For i=1 To n
List2.AddItem Str(a(i))
Next i
End Sub
以上程序段运行时,为了实现上述功能,加框处代码应改正为:①;②;③。
-
13、完成某排序算法的VB程序段如下:
For i=1 To 7
flag=False
For j=8 To i+1 Step-1
If a(j)<a(j-1) Then
t=a(j):a(j)=a(j-1):a(j-1)=t
flag=True
End If
Next j
If Not flag Then Exit For
Next i
数组a(1)到a(8)存储的数据依次为“38,11,21,62,59,65,77,79”,如果用上述算法排序,程序执行后,变量i的值为( )
A、2 B、3 C、4 D、7 -
14、通过排序算法对数组a中的5个数据“5,10,6,30,9”进行排序,部分VB程序如下:
For i=1 To 4
For j=5 To i+1 Step-1
If a(j)<a(j-1)Then
End If
Next j
Next i
下列关于该排序的说法正确的是( )
A、升序排序,实线框中的语句共执行了2次 B、升序排序,实线框中的语句共执行了3次 C、降序排序,实线框中的语句共执行了5次 D、降序排序,实线框中的语句共执行了6次 -
15、有如下VB程序段:
For i=1 To 2
For j=5 To i+1 Step-1
If a(j)<a(j-1)Then
t=a(j):a(j)=a(j-1):a(j-1)=t
End If
Next j
Next i
若数组元素a(1)到a(5)的值依次为“95,88,66,80,75”,则经过该程序段“加工”后,数组元素a(1)到a(5)的值依次为( )
A、66,75,95,88,80 B、66,75,80,95,88 C、95,88,66,80,75 D、95,88,80,75,66 -
16、对下列数据序列进行冒泡升序排序,排序效率最低的序列是( )A、31,29,24,20,15,10 B、10,15,20,24,29,31 C、29,10,31,15,20,24 D、24,29,31,20,15,10
-
17、某医院每天提前发放100个预约号。考虑到老年人身体,预约的病人按照以下规则进行就诊:
①老年人(年龄≥60岁)比非老年人优先就诊;
②老年人按年龄从大到小的顺序就诊,年龄相同的按预约顺序就诊;
③非老年人按预约顺序就诊。
小王根据以上规则编写了一个VB程序,通过引入索引数组temp进行排序,使得age(temp(1))≥age(temp(2))≥age(temp(3))…≥age(temp(n))。如图a所示。
图a
图b程序运行时,病人的数据显示在列表框List1中,单击“就诊排序”按钮Command1,排序结果显示在列表框List2中,程序运行界面如图b所示。
实现上述功能的VB程序如下,请回答下列问题:
(1)、分析程序,可知程序中读取的数据库工作表名称为。(2)、请在画线处填入合适的代码。Dim pname(1 To 100)As String ‘存放病人姓名
Dim age(1 To 100)As Integer ‘存放病人年龄
Dim num(1 To 100)As Integer ‘存放病人序号
Dim n As Integer
Private Sub Command1_Click( )
Dim temp1(1 To 100)As Integer, temp2(1 To 100)As Integer ‘索引数组
Dim i As Integer, j As Integer, k1 As Integer, k2 As Integer, t As Integer
k1=0:k2=0
For i=1 To n
If age(i)<60 Then
k1=k1+1
temp1(k1)=num(i)
Else
k2=k2+1
temp2(k2)=num(i)
End If
Next i
For i=1 To k2-1
For j=k2 To i+1 Step-1
If ① Then
t=temp2(j):temp2(j)=temp2(j-1):temp2(j-1)=t
End If
Next j
Next i
List2.Clear
List2.Addltem "就诊号 名单 年龄"
For i=1 To k2
List2.Addltem Str(i)&." "&.pname(temp2(i))&"r/&.Str(age(temp2(i)))
Next i
For j=1 To k1
List2.Addltem ② &" "&pname(templ(j)&" "&.Str(age(templ(j)))
Next j
End Sub
Private Sub Form_Load( )
Dim conn As New ADODB. Connection, rs As New ADODB. Recordset
Conn.ConnectionString="Provider=Microsoft. ACE. OLEDB. 12.0;DataSource="&App. Path&"\pdxt.accdb"
conn.Open
Set rs. ActiveConnection=conn
rs. Open"select*from jzmd"
n=0
List1.AddItem"预约号 名单 年龄"
Do While Not rs. EOF
③
num(n)=n
pname(n)=rs. Fields(1)
age(n)=rs Fields(2)
List1. Addltem Str(num(n))&" "&-pname(n)&." "&.Str(age(n))
rs. MoveNext
Loop
rs.Close:conn.Close
End Sub
以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②;③。
-
18、小王编写统计工厂中生产某种零件的工人数量的VB程序,运行程序后,从数据库中获取每个工人生产的零件数量,并存储在数组xs中:在文本框Text1中输入达标零件数da,单击“开始统计”按钮Command1,筛选数组xs中大于等于所输入零件数da的数据,并依次存储在数组bf中。最后统计数组bf中生产相同零件数量的人数,存储在数组tj后,将统计结果输出在列表框List1中,数组tj中各元素的含义如下表所示,程序运行界面如图所示。
数组元素
数组元素的含义
tj(1)
存储查找到第1个大于da的零件数
tj(2)
存储生产了tj(1)个零件的工人数量
…
tj(2*i-1)
存储查找到第i个大于da的零件数
tj(2*i)
存储生产了tj(i)个零件的工人数量
…
例如:tj(1)=1948,tj(2)=12。这对数据的含义为:共有12个工人生产了1948个零件。
实现以上功能的VB程序如下,请回答下列问题:
(1)、根据程序运行界面的数据及数组tj中各元素的含义进行分析,数组元素tj(8)的值是(填数值)。(2)、请在画线处填入合适的代码。Private Sub Command1_Click( )
Dim bf(1 To 1000)As Integer
Dim maxn, d, k, sa As Integer
Dim I, j, flag As Integer
da=Val(Text1.Text):maxn=0:k=1
For j=1 To n
If xs(j)>=da Then maxn=maxn+1
bf(maxn)=xs(j)
Next j
For i=1 To maxn
flag=0
For j=1 To i-1
If bf(i)=bf(j) Then flag=1
Next j
If flag=0 Then
①
d=1
For j=i+1 To maxn
If bf(i)=bf(j) Then ②
Next j
tj(2*k)=d
k=k+1
End If
Next i
k=k-1
For j=1 To ③
List1. Addltem Str(tj(j))+" "+Str(tj(j+1))
Next j
End Sub
以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②;③。
-
19、已知字符串型数组a(下标为1到2*n),在a(2*i-1)中保存了某班第i个同学的姓名,在a(2*i)中保存了第i个同学的技术成绩,并且a(2),a(4)…,a(2*n)是按成绩数值由大到小排列的,且各不相同,现按对分查找的方式查找成绩是key的同学的姓名,假设成绩是key的同学必定存在,部分VB程序如下:
i=1:j=n:f=False
Do While i<=j and Not f
___________
If Val(a(m))=key Then
Search=m:f=True
Elself Val(a(m))>key Then
i=m\2+1
Else
j=m\2-1
End If
Loop
Text2.Text="成绩是"+Str(key)+"的同学叫:"+a(m-1)
程序画线处应填入的代码为( )
A、m=Fix((i+j)/2) B、m=(2*i+2*j)/2 C、m=Fix(i+j)/2*2 D、m=(Fix(i+j)/2)*2 -
20、有如下VB程序段:
For i=1 To 10
a(i)=Int(Rnd*90)+10
Next i
For i=1 To 9
b(i)=Abs(a(i+1)-a(i))
c(b(i)\10)=c(b(i)\10)+1
Next i
For i=0 To 9
If c(i)>0 Then s=s+c(i)
Next i
Label1.Caption=Str(s)
若数组c中各元素初值为0,s的初值也为0,执行该程序段后,标签Label1上显示的内容是( )
A、5 B、7 C、9 D、10