null第六章 数 组第六章 数 组数组的概念数组的概念数组是一组相同类型数据的集合
数组用一个统一的名字代
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
逻辑上相关的一
批数据
每个元素用下标变量来区分
数组必须先声明后使用nullVisual Basic中的数组,按不同的方式可分为以下几类:
按数组的大小(元素个数)是否可以改变来分为:定长数组、动态(可变长)数组。
按元素的数据类型可分为:数值型数组、字符串数组、日期型数组、变体数组等。
按数组的维数可分为:一维数组、二维数组、多维数组。
null6.2 一维数组
6.2.1 一维数组的声明 (无隐式声明)
形式: Dim 数组名([<下界>to]<上界>)[As <数据类型>]
例1:Dim a(1 to 10) As Integer ‘a数组有10个元素
或: Dim 数组名[<数据类型符>]([<下界>to]<上界>)
Dim a%(1 to 10) null说明:
1.数组名的命名规则与变量的命名相同。
2.数组的元素个数:上界-下界+1。
3.缺省<下界>为0,
例:dim a(10) as integer ‘a数组有11个元素a(0)~a(10)
若希望下标从1开始,可在模块的通用部分使用Option Base语句将设为1。格式是: Option Base 1
例: Option Base 1
dim a(10) as integer ‘a数组有10个元素a(1)~a(10)
null4.<下界>和<上界>不能使用变量,必须是常量,常量可以是直接常量、符号常量,一般是整型常量。
5.如果省略As子句,则数组的类型为变体类型。
6.数组中各元素在内存占一片连续的存储空间,一维数组在内存中存放的顺序是下标大小的顺序,如图所示:null6.2.2 一维数组元素的引用使用形式: 数组名(下标)
其中:下标可以是整型变量、常量或表达式。
例如: 设有下面的数组a%(10), B%(10)
A(1)=A(2)+B(1)+5 ' 取数组元素运算
A(i)=B(i) ' 下标使用变量
B(i+1)=A(i+2) ' 下标使用表达式
引用不能下标越界!null6.2.3 一维数组的基本操作
通过循环给数组元素的初值
dim a%(1 to 10)
For i = 1 To 10
A(i)=int(rnd*100+1)
Next i
2. 数组的输入和输出
Dim sc(1 To 4) As Integer
For i = 1 To 4
sc(i) = InputBox("输入sc(" & i & ")的值")
Next i
For i = 1 To 4
Print sc(i)
Next inull求数组中最大元素所在下标
Dim Max As Integer, iMax As Integer
dim A%(1 to 10)
iMax=1
For i = 2 To 10
If A(i)>iMax Then
iMax=i
End If
Next I
例6.3 随机产生10个两位整数,求该数组中各元素值之和、最大值、最小值。例6.3 随机产生10个两位整数,求该数组中各元素值之和、最大值、最小值。Private Sub Command1_Click()
Dim e(1 to 10) As Integer,sum%,max%,min%
For i = 1 To 10 ' 此循环结构产生随机数并输出
e(i)= Int(Rnd * 90)+10
Print e(i);
Next i
Print
' 换行
sum= e(1) : max = e(1) : min = e(1)
For i = 2 To 10
sum=sum+ e(i)
If e(i)> max Then max = e(i)
If e(i)< min Then min = e(i)
Next i
Print "数组的和为";sum,"最大值为";max,"最小值为";min
End Subnull
将数组元素倒置Dim a(1 to 10)
For i =1 To 10\2
t=A(i)
A(i)=A(10-i+1)
A(10-i+1)=t
Next Inull排序问题
1.冒泡排序
2. 选择排序冒泡排序冒泡排序第一轮第二轮nullFor i = 1 To n - 1
For j = 1 To n-i
If a(j) > a(j+1) Then
temp=a(j)
a(j)=a(j+1)
a(j+1)=temp
End if
Next j
Next i
冒泡法排序(升序)的VB程序: 选择排序 选择排序第1轮第2轮第3轮选择排序选择排序①从n个数中选出最小的数,与第1 个数交换位置。
②余下的n-1个数中再选出最小的数,与第2个数交换位置。
③依次类推,选择了n-1次后,这个数列已按递增的次序排列。Private Sub Command1_Click()
Dim a(1 To 10) As Integer, t%
For i = 1 To 10
a(i) = Int(Rnd * 101)
Print a(i);
Next i
Print
For i = 1 To 9
imin = i
For j = i + 1 To 10
If a(imin) > a(j) Then imin = j
Next j
t = a(imin): a(imin) = a(i): a(i) = t
Next i
For i = 1 To 10
Print a(i);
Next i
End SubPrivate Sub Command1_Click()
Dim a(1 To 10) As Integer, t%
For i = 1 To 10
a(i) = Int(Rnd * 101)
Print a(i);
Next i
Print
For i = 1 To 9
imin = i
For j = i + 1 To 10
If a(imin) > a(j) Then imin = j
Next j
t = a(imin): a(imin) = a(i): a(i) = t
Next i
For i = 1 To 10
Print a(i);
Next i
End Sub生成随机数
给数组赋值选择排序打印排序后结果null 二、选择法排序
算法思想:
1)对有n个数的序列(存放在数组a(n)中),从中选出最小(升序)或最大(降序)的数,与第1个数交换位置;
2)除第1 个数外,其余n-1个数中选最小或最大的数,与第2个数交换位置;
3)依次类推,选择了n-1次后,这个数列已按升序排列。nullFor i = 1 To n - 1
imin = i
For j = i + 1 To n
If a(imin) > a(j) Then p = j
Next j
temp = a(i)
a(i) = a(imin)
a(imin) = temp
Next i
选择法排序(升序)的VB程序:null6.3 二维数组及多维数组 5.3.1 二维数组的声明声明格式如下:
Dim 数组名([<下界>] to <上界>,[<下界> to ]<上界>) [As <数据类型>]
其中的参数与一维数组完全相同。 例如:Dim a(2,3) As Single
二维数组在内存的存放顺序是“先行后列”。例如数组a的各元素在内存中的存放顺序是:
a(0,0)→a(0,1)→a(0,2)→a(0,3)→a(1,0)→a(1,1)→a(1,2)→
a(1,3)→a(2,0)→(2,1)→a(2,2)→a(2,3) null6.3.2 二维数组的引用 引用形式: 数组名(下标1,下标2)
例如: a(1,2)=10
a(i+2,j)=a(2,3)*2
在程序中常常通过二重循环来操作使用二维数组元素。 5.3.3 二维数组的基本操作 二维数组数据的输入
2. 求最大元素及其所在的行和列 二维数组数据的输入二维数组数据的输入Dim d(1 to 3, 1 to 4) As Integer
For i=1 To 3
For j=1 To 4
d(i, j) = InputBox("输入d(" & i & "," & j & ") 的值")
Print d(i, j);" ";
Next j
Print
Next i求二维数组最大元素及其所在的行和列求二维数组最大元素及其所在的行和列Private Sub Command1_Click()
Dim a(1 To 3, 1 To 5) As Integer
For i = 1 To 3
For j = 1 To 5
a(i, j) = Int(Rnd * 100)
Print a(i, j);
Next j
Print
Next I
imax = 1: jmax = 1
For i = 1 To 3
For j = 1 To 5
If a(i, j) > a(imax, jmax) Then
imax = i: jmax = j
End If
Next j
Next I
Print "最大元素是:"; a(imax, jmax)
End Subnull6.3.5 多维数组的声明和引用定义多维数组的格式如下:
Dim 数组名([<下界>] to <上界>,[<下界> to ]<上界>,……) [As <数据类型>]
例如:
Dim a(5,5,5) As Integer 声明a是三维数组
Dim b(2,6,10,5) As Integer ' 声明b是四维数组 null与数组操作有关的几个函数Array函数
Array函数可方便地对数组整体赋值, 例如,要将1,2,3,4,5,6,7 这些值赋值给数组a,可使用下面的方法赋值。
Dim a()
A=array(1,2,3,4,5,6,7)
Dim a
A=array(1,2,3,4,5,6,7)
注意:
①利用Array函数对数组各元素赋值,声明的数组必须是可调数组或连圆括号都可省略,并且其类型只能是Variant!
②数组的下界默认为零,上界由Array函数括号内的参数个数决定。也可通过LBound和UBound函数获得上界和下界。null 2 求数组的上界Ubound( )函数、 下界 Lbound( )函数 Ubound( )函数和Lbound( )函数
功能:用来确定数组某一维的上界和下界值。
使用形式如下:
Ubound(<数组名> [,
])
Lbound(<数组名> [, ])
其中:
<数组名>:必需的。数组变量的名称,遵循
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
变量命名约定。
: 可选的;一般是整型常量或变量。指定返回哪一维的上界。1 表
示第一维,2 表示第二维,如此等等。如果省略默认是1。null 6.2.2 动态数组
动态数组:在声明时未给出数组的大小。定长数组是在程序编译时分配存储空间,而动态数组是在程序执行时分配存储空间。
动态数组的建立及使用
建立动态数组包括声明和大小说明两步:
null
第一步:用Dim语句声明一个括号内为空的数组,语句形式为:
Dim 数组名( ) As 类型
第二步:引用数组前用ReDim语句指明该数组的大小。语句形式为:
ReDim 数组名(下标[,下标…])[as 类型]
例如:
Sub Form_Load( )
Dim a( ) As Single
…
n =Inputbox("输入n")
ReDim a(n)
…
End Subnull说明:
(1)ReDim语句是一个可执行语句,只能出现在过程中,并且可以多次使用,改变数组的维数和大小。
(2)定长数组声时中的下标只能是常量,而动态数组ReDim 语句中的下标是常量,也可以是有了确定值的变量。
例:
Private Sub Form_Click()
Dim N As Integer
N=Val(InputBox(“输入N=?”))
Dim a(N) As Integer
…….
End sub×null(3)在过程中可以多次使用ReDim来改变数组的大小,也可 改变数组的维数。
例: ReDim x(10)
ReDim x(20)
ReDim x(20, 5)
(4)每次使用ReDim语句都会使原来数组中值丢失,可以在ReDim后加Preserve 参数来保留数组中的数据。但此时 只能改变最后一维的大小。
ReDim x(10)
ReDim Preserve x(20)例6.2 编程输出Fibonacci数列:l,1,2,3,5,8,…的前n项。按每行5个数显示。例6.2 编程输出Fibonacci数列:l,1,2,3,5,8,…的前n项。按每行5个数显示。分析:本例要求输出前n项,n是一个变量,因此,应该使用动态数组。Private Sub Command1_Click()
Dim Fib(), n%, i%
n = InputBox("输入n的值(n>1)")
ReDim Fib(n)
Fib(1) = 1 :Fib(2) = 1
For i = 3 To n
Fib(i) = Fib(i - 1) + Fib(i - 2)
Next i
For i = 1 To n
Print Fib(i);
If i Mod 5 = 0 Then Print ' 每输出5个数便换行
Next i
End Sub6.5.2 插入数据
6.5.2 插入数据
例6.6 假定数组a( )是有序数组,将一个数插入该数组中,使插入后的数组仍然有序。
分析:首先查找插入的位置 i;
然后从下一元素到最后元素依次往后移动一个位置;
将要插入元素的位置腾出后,最后将数据插入 插入一个元素插入一个元素Private Sub Command1_Click()
Dim a() ,n%,Key%
a=Array(1, 3, 4, 7, 8, 11, 13, 15, 18)
n= UBound(a) ' 获得数组的上界
Key= InputBox("请输入要插入的数")
For i = 0 To n ' 查找欲插入数在数组中的位置
If Key= "A" And c <= "Z" Then ' 将A~Z大写字母转换成1~26的下标
j = Asc(c) - 65 + 1 ' 对应数组元素加1
a(j) = a(j) + 1
End If
Next I
For j = 1 To 26 ' 输出字母及其出现的次数
If a(j) > 0 Then Picture1.Print " "; Chr(j + 64); "="; a(j);
Next j
End Sub例6.9 输入整数n,显示出具有n行的杨辉三角形 例6.9 输入整数n,显示出具有n行的杨辉三角形 nullPrivate Sub Command1_Click() Dim s(20, 20) As Integer Dim i%, j%, n% n = Val(Text1.Text) For i = 1 To n s(i, 1) = 1 s(i, i) = 1 Next i For i = 3 To n For j = 2 To i – 1
s(i, j) = s(i - 1, j - 1) + s(i - 1, j) Next j Next i For i = 1 To n For j = 1 To i Picture1.Print Tab(6 * j); s(i, j); Next j Picture1.Print Next i End Sub null与数组操作有关的几个函数Array函数
Array函数可方便地对数组整体赋值, 例如,要将1,2,3,4,5,6,7 这些值赋值给数组a,可使用下面的方法赋值。
Dim a()
A=array(1,2,3,4,5,6,7)
Dim a
A=array(1,2,3,4,5,6,7)
注意:
①利用Array函数对数组各元素赋值,声明的数组必须是可调数组或连圆括号都可省略,并且其类型只能是Variant!
②数组的下界默认为零,上界由Array函数括号内的参数个数决定。也可通过LBound和UBound函数获得上界和下界。null 2 求数组的上界Ubound( )函数、 下界 Lbound( )函数 Ubound( )函数和Lbound( )函数
功能:用来确定数组某一维的上界和下界值。
使用形式如下:
Ubound(<数组名> [, ])
Lbound(<数组名> [, ])
其中:
<数组名>:必需的。数组变量的名称,遵循标准变量命名约定。
: 可选的;一般是整型常量或变量。指定返回哪一维的上界。1 表
示第一维,2 表示第二维,如此等等。如果省略默认是1。null6.5 控件数组 6.5.1 控件数组的概念
一组相同类型的控件组成。 它们共用一个控件名,具有相同的属性,建立时系统给每个元素赋一个唯一的索引号(Index)。 控件数组共享同样的事件过程,通过返回的下标值区分控件数组中的各个元素。
例: Private Sub cmdName _Click(Index As Integer)
…
If Index=3 then
‘ 处理第四个命令按钮的操作
End If
…
End Subnull6.5.2 控件数组的建立
一、在
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
时建立控件数组的步骤:
1.窗体上画出控件,进行属性设置,这是建立的第一个元素;
2.选中该控件,进行“Copy”操作若干次和“Paste”操作若干次建立了所需个数的控件数组元素。
3.进行事件过程的编程。
二、运行时添加控件数组的步骤如下: null1.在窗体上画出某控件,设置该控件的Index值为0,表示该控件为数组,这是建立的第一个元素,并可对一些取值相同的属性进行设置,如所有文本框的字体都取一样大小。
2.在编程时通过Load方法添加其余的若干个元素,也可以通过Unload方法删除某个添加的元素。
Load方法和Unload方法的使用格式:
Load 控件数组名(<表达式>)
Unload 控件数组名(<表达式>)
其中,<表达式>为整型数据。表示控件数组的某个元素。
3.通过Left和Top属性确定每个新添加的控件数组元素在窗体的位置,并将Visible 属性设置为True。 null通过例5.6来说明数组控件的使用:
例5.6 为例5.4的学生成绩处理设计如下图成绩输入界面