21世纪高等学校计算机基础教育系列教材 第8章数组的使用
第8章 数组的使用 •人民邮电出版社 21世纪高等学校计算机基础教育系列教材
数组的使用
数组的使用
数组与数组元素 数组是用一个统一的名称表示的、顺序排列的一组变量。数组中的变量 称为数组元素,用数字(下标)来标识它们,因此数组元素又称为下标变 数组的类型 数组的维数 固定大小的数组 数组的声明 有3种方法声明固定大小的数组,用哪一种方法取决于数组应用的有效 范围: 建立公用数组,在模块的通用段用 Public语句声明数组。格式为 Public数组名(〈维数定义〉)[As〈类型〉 建立模块级数组,在模块的通用段用 Private或Dim语句声明数组。 格式为 Private Dim数组名(〈维数定义〉)[As〈类型〉 建立局部数组,在过程中用Dim或 Private语句声明数组。格式为 Dim| Private数组名(〈维数定义))As〈类型〉
数组的概念 数组与数组元素 数组是用一个统一的名称表示的、顺序排列的一组变量。数组中的变量 称为数组元素,用数字(下标)来标识它们,因此数组元素又称为下标变 量。 数组的类型 数组的维数 固定大小的数组 数组的声明 有3种方法声明固定大小的数组,用哪一种方法取决于数组应用的有效 范围: l 建立公用数组,在模块的通用段用Public语句声明数组。格式为 Public 数组名(〈维数定义〉) [ As 〈类型〉] l 建立模块级数组,在模块的通用段用Private或Dim语句声明数组。 格式为 Private | Dim 数组名(〈维数定义〉)[ As 〈类型〉] l 建立局部数组,在过程中用Dim或Private语句声明数组。格式为 Dim | Private 数组名(〈维数定义〉)[ As 〈类型〉]
数组的使用 随机产生10个两位整数,找出其最大值、最小值和平均值,如图所示。 设计步骤如下 (1)建立应用程序用户界面与设置对象属性。 (2)编写代码。 随机整数的生成由窗体的Load事件代码完成 Private Sub Form Load Dim p As string Form1 Randomize 10个随机整数: For i=1 To 10 50 55,48,44,14 5,19,39,62 a()=Int(Rnd*90)+10 p=p&str(a(1)&"," 最大值B6 重置 最小值卩14 Labell Caption= LTrim( Left(p,Len(p)-1)平均值2 关闭 End Sub 求最大值、最小值和平均值
数组的使用 随机产生10个两位整数,找出其最大值、最小值和平均值,如图所示。 设计步骤如下: (1) 建立应用程序用户界面与设置对象属性。 (2) 编写代码。 随机整数的生成由窗体的Load事件代码完成: Private Sub Form_Load() Dim p As String Randomize p = "" For i = 1 To 10 a(i) = Int(Rnd * 90) + 10 p = p & Str(a(i)) & "," Next Label1.Caption = LTrim(Left(p, Len(p) – 1)) End Sub 求最大值、最小值和平均值
求最大、最小以及平均值由 “确定”按钮 Command2的“重置”按钮 Command 1的ick事件代 Click事件代码完成 码 Private Sub Private Sub Command1_Click Command2 Click Form load TextI Text= Dim n As Integer, m As Integer, Text2Text S As Single min=100:max=10:s=0 Text3 Text Fori= 1 To 10 End sub Ifa(i> n Then max=a( 最后是“关闭”按钮 Command3的 If a()<m Then min-a(i Clck事件代码: s=s+a(1) Private Sub Command3 Click Next Unload me Text 1. Text =max End sub Text2 Text = min Text3Text =s/10 End sub
求最大、最小以及平均值由 “ 确 定 ” 按 钮 Command2 的 Click事件代码完成: Private Sub Command2_Click() Dim n As Integer, m As Integer, s As Single min = 100: max = 10: s = 0 For i = 1 To 10 If a(i) > n Then max = a(i) If a(i) < m Then min = a(i) s = s + a(i) Next Text1.Text = max Text2.Text = min Text3.Text = s / 10 End Sub “重置”按钮Command1的Click事件代 码: Private Sub Command1_Click() Form_Load Text1.Text = "" Text2.Text = "" Text3.Text = "" End Sub 最后是“关闭”按钮Command3的 Click事件代码: Private Sub Command3_Click() Unload Me End Sub
交换数组中各元素 Private Sub Command2 Click 交换的要求就是将数组的第一个元素|End 和最后一个元素交换,第二个元 End Sub 素和倒数第二个元素交换,依此初始化按钮的代码: 类推。结果见图 Private Sub Command3 Click 交换按钮的代码 Fori=1 To 10 Private Sub Command1 Click TextIText=TextIText s(i)& For i=1 To 10\2 temp=S(1) Next i S(1)=s(10-i+ 1) End sub 10-1+ 1)=temp 初始化数组元素,可以使用 Next i Input Box()函数来输入数组元 For i= 1 To 10 素 Text2Text- Text2 Text s(i)& Private Sub Form Load Next i Fori= 1 To 10 End Sub S(i)=2*i-1 退出按钮的代码: Next i End sub
交换数组中各元素 交换的要求就是将数组的第一个元素 和最后一个元素交换,第二个元 素和倒数第二个元素交换,依此 类推。结果见图: ‘交换按钮的代码: Private Sub Command1_Click() For i = 1 To 10 \ 2 temp = s(i) s(i) = s(10 - i + 1) s(10 - i + 1) = temp Next i For i = 1 To 10 Text2.Text = Text2.Text & s(i) & " " Next i End Sub ‘退出按钮的代码: Private Sub Command2_Click() End End Sub ‘初始化按钮的代码: Private Sub Command3_Click() For i = 1 To 10 Text1.Text = Text1.Text & s(i) & " " Next i End Sub ‘初始化数组元素,可以使用 InputBox()函数来输入数组元 素 Private Sub Form_Load() For i = 1 To 10 s(i) = 2 * i - 1 Next i End Sub
交换数姐元素的次序 交换前的数组 交换后的数组 357911 917151311 531 初始化 交换》 退出
数组排序 排序就是将一组数据按照递增或者递减的次序排列。排序的方法有很多种, 常用的有选择法,冒泡法,插入法以及合并排序等等,其中最简单的是选 择法。在这里主要介绍选择法和冒泡法 选择法排序:对一组数组中的n个数,用选择法按照递减的顺序排列 的思想是: (1)对于有n个数的序列,从中选出最大的一个数与第一个数交换; (2)从除去第一个数的n-1个数中在按照步骤(1)选出最大的数和数组 序列的第二个数交换;一直重复第(1)步n-1次,最后构成递减数列 原始数组86923 A(1)a(2)a(3)a(4)a(5)第一遍交换96823 A(1)a(2)a(3)a(4)a(5)第二遍交换98623 A(1)a(2)a(3)a(4)a(5)第三遍交换98623 A(1)a(2)a(3)a(4)a(5)第四遍交换98632
数组排序 排序就是将一组数据按照递增或者递减的次序排列。排序的方法有很多种, 常用的有选择法,冒泡法,插入法以及合并排序等等,其中最简单的是选 择法。在这里主要介绍选择法和冒泡法。 选择法排序:对一组数组中的n个数,用选择法按照递减的顺序排列。选 择法排序的思想是: (1)对于有n个数的序列,从中选出最大的一个数与第一个数交换; (2)从除去第一个数的n-1个数中在按照步骤(1)选出最大的数和数组 序列的第二个数交换;一直重复第(1)步n-1次,最后构成递减数列。 原始数组 8 6 9 2 3 A(1) a(2) a(3) a(4) a(5) 第一遍交换 9 6 8 2 3 A(1) a(2) a(3) a(4) a(5) 第二遍交换 9 8 6 2 3 A(1) a(2) a(3) a(4) a(5) 第三遍交换 9 8 6 2 3 A(1) a(2) a(3) a(4) a(5) 第四遍交换 9 8 6 3 2
选择法的算法程序通用代码 for- to n-I for 1-l+I to n if s(> s(min) then imin- next I temp=s(min s(imin)=s(I s()=temp next I
选择法的算法程序通用代码 for I=1 to n-1 imin = I for j=I+1 to n if s(j)> s(imin) then imin=j next j temp = s(imin) s(imin) = s(I) s(I) = temp next I
的思想是: 将第一个元素和第二个元素比较,如果第一个元素大于第二个元素, 则将第一个元素和第二个元素交换;2.比较第二个元素和第三个元素,以 此类推,直到第n-1个元素和第n个元素;3.对前n-1个元素重复进行第1步 和第2步;4.重复第3步直到形成一个递增的数组。 下面是实现冒泡排序的通用程序段:为了通用性更强,这里给出含有n个 元素的数组的排序程序代码 For- to I step-1 For I to I IfS()>S(+1)then Temp=S( SU)=s(+1 S(+l)= Temp End If Next I Next I
冒泡排序的思想是: 1.将第一个元素和第二个元素比较,如果第一个元素大于第二个元素, 则将第一个元素和第二个元素交换;2.比较第二个元素和第三个元素,以 此类推,直到第n-1个元素和第n个元素;3.对前n-1个元素重复进行第1步 和第2步;4.重复第3步直到形成一个递增的数组。 下面是实现冒泡排序的通用程序段:为了通用性更强,这里给出含有n个 元素的数组的排序程序代码: For I = n-1 to 1 step –1 For j=1 to I If S(j)>S(j+1) then Temp =S(j) S(j)=s(j+1) S(j+1) = Temp End If Next j Next I