相关试卷
-
1、查找并删除重复数据的算法是基于顺序查找的优化,主要思路是把待查数据的起点元素设置成查找关键字,然后从后往前查找,通过结束时所停留的数据位置来判断查找结果(即结束时若停留在数据序列的起点,则表示数据序列中无重复数据;否则,存在重复数据,删除该数据后继续查找)。
编写VB程序,实现上述算法。程序功能如下:运行程序时,在列表框List1中显示数组a中的原始数据,并在列表框List2中输出去重后的数组a中的数据,即相同的数据仅保留一个。同时在标签Label1中显示删除的数据总个数,运行效果如图所示,程序代码如下:
Const maxn=10
Dim a(1 To maxn)As Integer
Private Sub Form_Load( )
´maxn个数据在数组a中,并在列表框List1中显示
End Sub
Private Sub Command1_Click( )
Dim i As Integer, n As Integer ‘n用于存储当前查找的数字长度
Dim j As Integer, key As Integer ‘key用于存储本次查找的关键字的数据位置
key=1:n=maxn
Do While key<=n
i=n-1
Do While
‘①i=i-1
Loop
If i=key Then ‘找到重复数据,删除;未找到,设定下一查找关键字
key=key+1
Else
For j=i To n-1
a(j)=a(j+1)
Next j
n=n-1
End If
Loop
For i= 1To n
List2.AddItem a(i)
Next i
Labell.Caption="共删除重复数据:"&___________&"个"
End Sub
(1)、程序代码“Sub Form_Load( )”中,Load是(单选,填字母:A .属性名/B .事件名/C .方法名/D .类名)。(2)、程序代码中,加框处循环条件有误,请改正。(3)、请将程序代码中的画线处赋值语句补充完整。(4)、如图所示的原始数据中,重复数是“1,7,10”,该程序运行时,最先删除的重复数是。 -
2、已知数组a中存储五个数据:8,13,24,32,45,现在Text1中输入一个整数x,将x插入到数组中,并使数据序列仍保持有序。
Private Sub Command1_Click( )
Dim n, i, j, x As Integer
n=5:i=1
x=Val(Text1.Text)
If x>a(n)Then
a(n+1)=x
Else
Do While x>a(i)
①
Loop
For j=n To i Step-1
a(j+1)=a(j)
Next j
②
End If
n=n+1
End Sub
以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②。
-
3、有如下VB程序段:
n=10
For i=1 Ton-1
For j=i+1 To n
If a(i)=a(j)Then
a(j)=a(n)
n=n-1
End If
Next j
Next i
若数组a中的元素为“3,3,7,7,11,11,15,15,19,19”,则该程序执行后,数组a中的n个元素值依次为( )
A、3,19,7,15,11 B、3,7,11,15,19 C、3,3,7,7,11 D、3,19,7,19,11 -
4、有如下VB程序段:
m=Val(Text1.Text)
i=n:f=False
Do While i>0 And f=False
If a(i)>m Then
a(i+1)=a(i)
i=i-1
Else
f=True
End If
Loop
数组中的n个元素从小到大排序,如果要将Text1中输入的值m插入到数组中,仍使元素值保持有序,则应插入的正确位置是( )
A、i-1 B、i C、i+1 D、i+2 -
5、编写寻找最长等差数列程序时,先随机生成n(n=20)个互不相同的整数,并降序排列后显示在List1中,找出由连续的数组元素构成的最长等差数列,并将其输出在列表框List2中(若长度相等,则输出靠前的一组),程序运行界面如图所示。
实现上述功能的VB程序如下。
Dim a(1 To 20)As Integer
Dim n As Integer
Private Sub Command1_Click( )
‘随机生成20个互不相同的整数,存储在数组a中,n记录了整数的个数,代码略
End Sub
Private Sub Command2_Click( )
Dim t,max,w As Integer
Dim i,c As Integer
max=1:w=1
i=2:t=2
①
Do While i<n
If a(i+1)-a(i)=c Then
t=t+1
If t>max Then
max=t
②
End If
Else
t=2
c=a(i+1)-a(i)
End If
i=i+1
Loop
If max>2 Then
For i= ③ To w
List2. AddItem Str(a(i))
Next i
Else
List2. AddItem"没有找到等差数列"
End If
End Sub
以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②;③。
-
6、在一行数据(1,23,6,2,4,5,6,18,5,19)中,存在连续递增的数据序列(1,23),(6),(2,4,5,6,18),(5,19),其序列长度分别为2,1,5,2,则连续递增的数据序列长度的最大值max=5。求max值的VB程序如下,但加框处代码有错,请改正。
Const n=10
Dim a(1 To n)As Integer
‘Text1_KeyPress过程用于输入数据并将数据依次存放到数组a中
Private Sub Text1_KeyPress(KeyAscii As Integer)
‘该过程代码略
End Sub
Private Sub Command1_Click( )
Dim i,k,max As Integer
max=1
k=1
For i=2 To n
If
Then k=k+1 Else k=1 ‘⑴If k>max Then
‘⑵Next i
Text2.Text=Str(max)
End Sub
以上程序段运行时,为了实现上述功能,加框处的代码应改正为:⑴;⑵。
-
7、下列VB程序段是选择排序程序的主要部分。其中框内代码用于寻找数据元素a(i)到a(n)的最小值。
For i=1 To n-1
k=i
If i<>k Then t=a(i):a(i)=a(k):a(k)=t
Next i
框内代码运行结束时,保存最小值的数组元素一定是( )
A、a(n) B、a(j) C、a(i) D、a(k) -
8、有如下VB程序段,该程序段执行后,变量x中存储的是( )
k=1
For j=2 To 100
If a(j)>a(k)Then k=j
Next j
x=a(k)
A、a(1)至a(100)中的最小值 B、a(1)至a(100)中的最大值 C、a(2)至a(100)中的最小值 D、a(2)至a(100)中的最大值 -
9、有如下VB程序段:
Dim a(1 To 20)As Integer
For i=2 To 10
For j=2 To 20\i
a(i*j)=a(i*j)+1
Next j
Next i
运行该程序段后,数组a中值为1的元素个数为( )
A、1个 B、2个 C、3个 D、4个 -
10、有如下VB程序段:
For i=1 To 10
f=i Mod 2
If f=0 Then a(i)=0 Else a(i)=1
For j=1 To i
If f=0 Then a(i)=a(i)+j Else a(i)=a(i)*j
Next j
Next i
执行该程序段后,数组元素a(4)的值为( )
A、10 B、6 C、4 D、1 -
11、有如下VB程序:
Private Sub Command1_Click( )
Dim a(0 To 4)As Integer
Dim i As Integer
a(4)=Val(Text1.Text)
For i=3 To 1 Step-1
a(i)=a(i+1)/2
Next i
Text1.Text=Str(a(i+1))
End Sub
在文本框Text1中输入“128”,连续单击2次按钮Command1后,文本框Text1中显示的内容是( )
A、2 B、8 C、16 D、32 -
12、有如下VB程序段,该程序段运行后,在文本框中显示的内容是( )
Dim a(1 To 10)As Integer
Dim i As Integer, j As Integer
a(1)=1:a(2)=1
For i=3 To 5
a(i)=1
For j=i-1 To 2 Step-1
a(j)=a(j)+a(j-1)
Next j
Next i
Text1.Text=Str(a(3))
A、1 B、3 C、4 D、6 -
13、有如下程序段:
Dim a(10) As Integer
Dim b(10) As Integer
k=Val(Text1. Text)
For i=1 To 5
a(i)=a(i-1)+1
t=(i+k) Mod 10
If t=0 Then t=10
b(t)=a(i)
Next i
文本框Text1中的输入值为8,则执行该程序段后,b(3)的值为( )
A、0 B、3 C、4 D、5 -
14、有如下VB程序段:
For i=1 To 6
a(i)=Int(Rnd*10)+1
Next i
For i=1 To 5
If i Mod 2=1 And a(i)>a(i+1)Then
T=a(i):a(i)=a(i+1):a(i+1)=t
Else
a(i)=a(i)+1
End If
Next i
执行该程序段后,a(1)~a(6)各元素可能的值是( )
A、11,11,7,9,3,9 B、6,2,8,10,5,9 C、6,9,3,7,8,12 D、3,9,0,8,2,7 -
15、有如下程序段:
a(1)=1:a(2)=2
i=3:flag=True
Do While i<=10 and flag=True
a(i)=a(i-1)+a(i-2)
If a(i)>4*i then flag=False
i=i+1
Loop
Text1.Text=a(i-1)
该程序段运行后,文本框Text1中显示的是( )
A、21 B、32 C、34 D、55 -
16、有如下程序段:
Dim i As Integer,Sum As Integer
Dim a(1 To 11)As Integer
i=10:a(11)=49
Do While i>=1
a(i)=a(i+1)-1
If a(i)Mod 3=0 Then Sum=Sum+a(i)
i=i-1
Loop
Text1.Text=Str(Sum)
该程序段运行后,文本框Text1中显示的内容是( )
A、174 B、180 C、36 D、42 -
17、求两个整数的最大公约数可以使用递归算法实现,程序运行界面如图所示。在文本框Text1中输入两个数字中较大的数字m,在Text2中输入较小的数字n,单击Command1按钮,在Text3中显示数字m和n的最大公约数。可实现该目的的VB程序如下,请在画线处填入合适的代码。
Private Sub Command1_Click( )
Dim m,n As Integer
m=Val(Text1.Text)
n=Val(Text2.Text)
Text3.Text= ①
End Sub
Function gcd(x, y As Integer)As Integer
Dim z As Integer
z=x Mod y
If z=0 Then
gcd= ②
Else
gcd=gcd(y, z)
End If
End Function
以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②。
-
18、有如下VB程序段:
Private Sub Command1_Click( )
Dimi As Integer, s As Integer
s=0
For i=1 To 3 Step 2
s=s+f(i)
Next i
Text1. Text=Str(s)
End Sub
Function f(n As Integer) As Integer
If n=1 Then
f=2
Else
f=f(n-1)+n
End If
End Function
执行该程序段后,s的值为( )
A、2 B、7 C、9 D、13 -
19、有如下VB程序段:
Private Function f(x As Single, n As Integer)As Single
If n=0 then
f=1
Else
If n Mod 2=1 then
f=x*f(x,n\2)
Else
f=f(x,n\2)\x
End If
End If
End Function
Private Sub Command1_Click( )
Label1.Caption=Str(f(4,6))
End Sub
程序运行时,单击按钮Command1,标签Label1显示的内容是( )
A、1 B、4 C、27 D、64 -
20、有如下VB程序段,执行该程序段后,Text1中显示的值为( )
Function f(n As Integer)As Integer
If n<=1 Then
f=1
Else
f=n*f(n-1)
End If
End Function
Private Sub Command1_Click( )
Text1.Text=Str(f(5))
End Sub
A、10 B、60 C、120 D、140