第7章VB习题及答案 下载本文

内容发布更新时间 : 2024/6/16 16:47:07星期一 下面是文章的全部内容请认真阅读。

Next i For i=1 To 3 For j=1 To 2 (2) Print b(i,j); Next j Print Next i End Sub

2.下面的程序是将输入的一个数插入到递减的有序数列中,插入后使该序列仍然有序递减。请在程序中下划线处填入相应的内容。 Private Sub Form_Click() Dim a,i%,n%,m%

A=Array(19,17,15,13,11,9,7,5,3,1) n=Ubound(A) ReDim (3)

m=Val(InputBox(“输入欲插入的数”)) For i=Ubound(a)-1 To 0 Step-1 If m>=a(i)Then (4) If i=0 Then a(i)=m Else

(5) Exit For

End If Next i

For i=0 To Ubound(A) Print a(i) Next i End Sub 3.冒泡法排序

在教程中已介绍选择法、合并法排序,上例使用插入法排序,常用的排序方法还有冒泡法。

冒泡法排序与选择法排序相似,选择法排序在每一轮排序时找最大(递减顺序)数的下标,出了内循环(一轮排序结束),再交换最大数的位置;而冒泡法排序在每一轮排序时将相邻的数比较,当顺序不对就交换位置,出了内循环,最大数已冒出。

按递增顺序排序的程序如下: Private Sub Form_Click() Dim a,n%,j%,i%,t

a=Array(19,5,15,7,11,9,23,6,3,1) n=Ubound(a) For i=0 To n-1 For j=0 To n-i-1 If a(j)>a(j+1)Then

(6) : (7) ::a(j+1)=t End If Next j Next i

For i=0 To Ubound(a) Print a(i); Next I End Sub

请在程序中下划线处填入相应的内容。

为了提高效率,若在某一轮排序时,未发生位置交换,说明欲排序的序列已有序,排序就可结束。程序中只要增加一个逻辑变量来进行判断。程序如下: Private Sub Form_Click() Dim a,n%,m%,I%,Tag As Boolean a=Array(1,5,6,7,4,13,23,26,31,51) n=Ubound(A) For i=0 To n-1 Tag=False For j=0 To n-1-i If a(j) >a(j+1)Then

(8)

(9) : (10) :a(j+1)=t End If Next j If (11) Next I

For I=0 To Ubound(a) Print a(i); Next i

End Sub 参考答案 一、选择题

1.B 2.C 3.A 4.D 5.A 6.D 7.B 8.A 9.B 二、填空题

1.(1)a(i,i)=n (2)b(i,j)=a(j,i)

2.(3)Preserve a(n+1) 插入一个数,先要使数组加一个元素,而且要保留原数据。

(4)a(i+1)=a(i) 找插入的位置。 (5)a(i+1)=m 新数据找到插入位置,插入到数组中。

3.(6)t=a(i) (7) a(j)=a(j+1) (8)Tag=True Tag为True,说明数次序不对,进行过交换。

(9)t=a(i) (10)a(j)=a(j+1)

(11)Not Tag Then Exit For 在某一轮比较时没有发生过数据位置交换,说明数组已有序,不必再进行下一轮的比较。