1. 掌握数组的声明和数组元素的引用方法,理解数组的基本概念。
2. 掌握静态一维数组在程序设计中的使用。
3. 掌握简单的排序算法。
4. 了解控件数组的概念及其创建方式。
5. 掌握定义Function过程和Sub过程的方法,并能够在程序中调用你定义的过程。
6. 了解VB程序的基本结构及代码组织方式。
一、数组的使用
某数组有20个元素,分别为1、2、…、20。编程实现将其前十个元素和后十个元素对调,即将第1个元素和第11个元素对调,第2个元素和第12个元素对调,依次类推。补充完善如下代码,并调试通过。
PrivateSub Form_Click()
Dima(1 To 20) As Integer
Dimi As Integer, t As Integer
Fori = 1 To 20
a(i) = i
Nexti
Fori = 1 To 10
Nexti
Fori = 1 To 20
Printa(i)
Nexti
EndSub
运行该程序,然后回答以下两个问题。
(1)在引用数组元素时,应注意一些什么样的问题?
(2)能否像使用普通变量那样,不经声明就使用数组元素?
二、冒泡排序法
用随机函数产生20个1~100之间的整数,使其按升序排列。请使用冒泡排序法完成本题目的设计工作。补充完善如下代码,并调试通过。
冒泡排序法如下:对于大小为n的数组a,我们先依次比较两个相邻的元素:a(1)和a(2)、a(2)和a(3)、……、a(n-1)和a(n),比较时将小的元素交换到前面,完成第一趟排序,这时a(n)中将存放数组元素中最大的值;然后使用相同的算法在a(1)到a(n-1)之间依次进行比较交换,完成第二趟排序,这时a(n-1)中将存放数组元素中第二大的值;依次类推,经过n-1趟排序,数组元素将从小到大排列。
PrivateSub Form_Click()
Dim N(1 To 20) As Integer
Dim R As Integer
Dim I As Integer
Dim J As Integer
Print "排序前的数据为:"
For I = 1 To 20
N(I) = Int(Rnd(10) * 100 + 1)
Print N(I);
Next I
For I =
For J =
If N(J) > N(J + 1) Then (a)
End If
Next J
Next I
Print "排序后的数据为:"
For I = 1 To 20
Print N(I);
Next I
EndSub
运行该程序,然后回答以下几个问题。
(1)冒泡排序法的核心思想是什么?
(2)对含有20个元素的数组进行排序,内层循环体中的语句(a)执行多少次?
(3)对含有n个元素的数组进行排序,内层循环体中的语句(a)执行多少次?
(4)修改以上题目,将参与排序的数组元素个数由20改为10000,然后看一看本程序的运行需要多少时间,这说明了什么问题?
(5)在第4个问题中,你在代码中修改了几处?为了方便程序代码的修改,对于那些在程序调试中要经常修改的常量数据,应怎样表示才好?
三、选择排序法
用随机函数产生20个1~100之间的整数,使其按升序排列。请使用选择排序法完成本题目的设计工作。补充完善如下代码,并调试通过。
选择排序法如下:对于大小为n的数组a,我们先从a(1)、a(2)、…、a(n)中选出最小的元素a(k1),并将其与a(1)互换位置;而后再从a(2)、…、a(n1)中选出最小的元素a(k2),并将其与a(2)互换位置;……;如此循环n-1次,就完成了整个数组的排序。
PrivateSub Form_Click()
Dim N(1 To 20) As Integer
Dim R As Integer
Dim I As Integer
Dim J As Integer
Print "排序前的数据为:"
For I = 1 To 20
N(I) = Int(Rnd(10) * 100 + 1)
Print N(I);
Next I
For I =
For J =
If N(I) > N(J) Then (a)
End If
Next J
Next I
Print "排序后的数据为:"
For I = 1 To 20
Print N(I);
Next I
EndSub
运行该程序,然后回答以下几个问题。
(1)选择排序法的核心思想是什么?
(2)对含有20个元素的数组进行排序,内层循环体中的语句(a)执行多少次?
(3)对含有n个元素的数组进行排序,内层循环体中的语句(a)执行多少次?
(4)修改以上题目,将参与排序的数组元素个数由20改为10000,然后看一看本程序的运行需要多少时间,这说明了什么问题?
(5)比较冒泡排序法和选择排序法的异同点,将你能考虑到的写在下面。