null第五章 数组第五章 数组 数组的概念
数组的基本操作
控件数组
常用算法内 容5.1 数组的概念5.1 数组的概念为了统计100个学生的程序设计的成绩,可以用s1、s2、s3、…… 、s100来代
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
每个学生的成绩。s1、s2、s3、……s100相同的名称不同的下标5.1 数组的概念——数组的定义 5.1 数组的概念——数组的定义 5.1.1数组的定义
数组的概念:数组是一组相同类型数据的集合。是用相同名字,不同下标的下标变量来表示同一属性的一组数据。每个元素用下标变量来区分;下标变量代表元素在数组中的位置。
其表示形式:
A(1),A(10)
X(1,1), X1(1,10), X(2,10)
Y(0,0,0), Y(1,2,5)5.1 数组的概念——数组的定义5.1 数组的概念——数组的定义数组定义:
第一种格式
一维数组 Dim 数组名(下标上届) As 类型名称
例:Dim A(5) as integer
二维数组
Dim 数组名(第一维下标上届,第二维下标上届) as 类型名称
例:Dim A(3,4) as integer
5.1 数组的概念——数组的定义5.1 数组的概念——数组的定义null5.1 数组的概念——数组的定义Dim 数组名([<下界>to]<上界>[,[<下届>to ]上界]…..)[As <数据类型>]
Dim 数组名([<下界>to]<上界>)[As <数据类型>]
或: Dim 数组名[<数据类型符>]([<下界>to]<上界>)
例:Dim a(1 to 10) As Integer ‘ 声明了a数组有10个元素
1是下标的下界10是下标的上界数组元数的数据类型与上面声明等价形式: Dim a%(1 to 10)
Dim text(-2 to 3) As integer
Dim K(1 to 3,2 to 4)第二种定义方法:null说明:
1.数组名的命名规则与变量的命名相同。做到“见名知义”。
2.数组的元素个数:上界-下界+1。
3.缺省<下界>为0,若希望下标从1开始,可在模块的通用部分使用Option Base语句将设为1。其使用格式是:
Option Base 0|1 ' 后面的参数只能取0或1
例如:
Option Base 1 ' 将数组声明中缺省<下界>下标设为1
4.<下界>和<上界>不能使用变量,必须是常量,常量可以是直接常量、符号常量,一般是整型常量。
Dim N As Integer
N=Val(Input(“Enter a Number=?”))
Dim A(N) As Integer ×5.1 数组的概念——数组的定义5.1 数组的概念——数组的定义5.1 数组的概念——数组的定义5.数组必须先定义,后使用。当用Dim语句定义数组时,数值数组中的全部元素初始值为0,字符串中的全部元素为空字符串。
Dim a(5) as integer
Dim str(10) as string
6.数组下界必须小于上界。
a(-1 to 10, 3 to 5)
d(3 to 1, 3 to 6)
5.1 数组的概念——数组的定义7 在同一个过程中,数组名不能与变量名同名,否则会出错。
例:
Private Sub Form_DblClick()
Dim a(5)
Dim a
a = 8
a(2) = 10
Print a, a(2)
End Sub出错,数组名不能与变量名同名5.1 数组的概念——数组的定义5.1 数组的概念——数组的定义5.1 数组的概念——数组的定义(8)Lbound和Ubound求数组的上界和下界值。
格式:Lbound(数组[,维])返回数组中指定维的下界
Ubound(数组[,维])返回数组中指定维的上界
Dim A(1 to 100,0 to 50, -3 to 4)
Print Lbound(A,1),Ubound(A,1)
Print Lbound(A,2),Ubound(A,2)
Print Lbound(A,3),Ubound(A,3)1 100
0 50
-3 45.1 数组的概念——数组的定义5.1 数组的概念——数组的定义Option Base 0
Dim B(-1 To 10, 2 To 9, 20) As Integer
则数组B中共有( [1] )个元素。
A.1800 B.1848 C.2016 D.2310
null5.2 数组的基本操作1.数组的引用:是对数组元素的引用
使用形式: 数组名(下标)
其中:下标可以是整型变量、常量或表达式。
例如: 设有下面的数组定义:
Dim B(10) As Integer,A(10), C(5,5) As Integer
则下面的语句都是正确的。
A(1)=A(2)+B(1)+5 ' 取数组元素运算
A(i)=B(i) ' 下标使用变量
B(i+1)=A(i+2) ‘ 下标使用表达式
C(2,3)=A(1)
注意数组越界问题:A(11)=C(1,1)null2. 数组的输入
一般通过for循环语句及inputbox函数输入。
Option base 1
‘输入100个学生的名字,并存入到数组stuname中
Sub Form_Click()
Dim stuname(100) as string
For i = 1 To 100
stuname(i) =InputBox(“输入stuname (” & i & “) 的值”)
Next I
End Sub5.2 数组的基本操作5.2 数组的基本操作5.2 数组的基本操作Option base 1
Sub Form_Click()
Dim A(3,5) as integer
For i=1 to 3
For j=1 to 3
A(I,j)=i*j
Next j
Next i
End sub程序运行后,数组A各元素的值为
A(1,1)=1
A(1,2)=2
A(1,3)=3
A(2,1)=2
A(2,2)=4
A(2,3)=65.2 数组的基本操作5.2 数组的基本操作利用Array函数为数组赋值
格式:数组变量名=Array(数组元素值)
Option Base 1
Dim text as variant
Text=array(“one”,”two”,”three”)
Print text(2)5.2 数组的基本操作5.2 数组的基本操作说明:数组只能为variant类型,可通过以下几种方式定义
(1)显式定义,Dim text as variant
(2)在定义时不指名类型,dim text
(3)不定义直接使用
(4)Array只能对一维数组赋值5.2 数组的基本操作5.2 数组的基本操作3.数组元素的输出
Option base 1
Dim a(4,4) as integer
For i=1 to 4
for j=1 to 4
a(I,j)=inputbox(“输入数据”)
next j
Next inull以下( [1] )是Visual Basic合法的数组元素。
A.X9 B.X[9] C.X(I+1) D.X(X(5)) E.X{6} F.X(0)
Option Base 0
Private Sub Command1_Click()
Dim a
a=Array(”a”,”b”,”c”,”d”,”e”,”f”,”g”)
Print a(1); a(3); a(5)
End Sub
A.abc B.bdf C.ace D.出错nullDim A(5,5)
For I=1 To 3
For J=1 To 4
A(I,J)=I*J
Next J
Next I
For N=1 To 2
For M=1 To 3
Print A(M,N);
Next M
Next N
A.1 2 3 4 2 4 B.1 2 3 4 6 8
C.1 2 3 2 4 6 D.1 2 3 6 3 65.2 数组的基本操作5.2 数组的基本操作For i=1 to 4
for j=1 to 4
print a(I,j):””
next j
print
Next i
5.2 数组的基本操作1. 求数组中最大元素及所在下标
Dim Max As Integer, iMax As Integer
Max=A(1):iMax=1
For i = 2 To 10
If A(i)>Max Then
Max=A(i)
iMax=i
End If
Next I
2. 将数组元素倒置
For i =1 To 10\2
t=A(i)
A(i)=A(10-i+1)
A(10-i+1)=t
Next I5.2 数组的基本操作null2. 求二维数组中最大元素及其所在的行和列
用变量max存放最大值,row,column存放最大值所在行列号 Max = a(1, 1): row = 1: Column = 1
For i = 1 To N
For j = 1 To M
If a(i, j) > a(row, Column) Then
Max = a(i, j)
row = i
Column = j
End If
Next j
Next i
Print "最大元素是"; Max
Print "在第" & row & "行,"; "第" & Column & "列5.2 数组的基本操作 例:输入某小组5个同学的成绩,计算总分和平均分(取小数后一位)
本例利用InputBox函数来输入成绩,输入完毕后经过计算,再采用Print直接在窗体上输出结果。 5.2 数组的基本操作5.2 数组的基本操作 Private Sub Form_Load()
Dim d(5) As Integer
Dim i As Integer, total As Single, average As Single
Show
For i = 1 To 5 '输入成绩
d(i) = Val(InputBox("请输入第" & Str(i) & _ "个学生的成绩", "输入成绩"))
Next i
total = 0
For i = 1 To 5 '计算总分和平均分
total = total + d(i)
Next i
average = total / 5
Print "总分:" & total
Print "平均分:" & Format(average, "##.0")
End Sub 5.2 数组的基本操作null例: 分别计算5个学生和3门课的平均分
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
:用一个二维数组a(5, 3)来描述。程序中设置两重循环,用以实现每行和每列上的累加。本例采用赋值语句来输入学生成绩,并采用Print直接在窗体上输出结果
某学习小组有5名学生,成绩如表6.1所示
求5个学生的平均分
下标使用情况r=1 c=1, 2, 3
r=2 c=1, 2, 3
r=3 c=1, 2, 3
r=4 c=1, 2, 3
r=5 c=1, 2, 3nullOption Base 1
Private Sub Form_click()
Dim a(5, 3) As Integer
Dim r As Integer, c As Integer, s As Integer
k = Array("数学", "英语", "计算机") '输入课程名
a(1, 1) = 69: a(1, 2) = 89: a(1, 3) = 74 '输入学生成绩
a(2, 1) = 94: a(2, 2) = 80: a(2, 3) = 90
a(3, 1) = 57: a(3, 2) = 62: a(3, 3) = 73
a(4, 1) = 98: a(4, 2) = 94: a(4, 3) = 90
a(5, 1) = 73: a(5, 2) = 76: a(5, 3) = 63nullPrint "学生", "平均分“
Print String(20, "-") '输出20个减号“-”
For r = 1 To 5
s = 0 '累加前清0
For c = 1 To 3 '累加同一行数据
s = s + a(r, c)
Next c
Print r, Format(s / 3, "##.0")
Next r
Print
Print "课程", "平均分"
Print String(20, "-")
For c = 1 To 3
s = 0
For r = 1 To 5 '累加同一列数据
s = s + a(r, c)
Next r
Print k(c), Format(s / 5, "##.0")
Next c
End Subnull程序运行结果 null5.3 控件数组 5.3.1 控件数组的概念
一组相同类型的控件组成。 它们共用一个控件名,具有相同的属性,建立时系统给每个元素赋一个唯一的索引号(Index)。 控件数组共享同样的事件过程,通过返回的下标值区分控件数组中的各个元素。
例: Private Sub cmdOK_Click(Index As Integer)
… ' 三个命令按钮共享代段
Select Case Index
Case 0
…… ' 处理第一个命令按钮的操作
Case 1
…… ' 处理第二个命令按钮的操作
Case 2
…… ' 处理第三个命令按钮的操作
End Select
…
End Subnull5.3.2 控件数组的建立
一、在设计时建立控件数组的步骤:
1.窗体上画出控件,进行属性设置,这是建立的第一个元素;
2.选中该控件,进行“Copy”操作若干次和“Paste”操作若干次建立了所需个数的控件数组元素。
3.进行事件过程的编程。
二、运行时添加控件数组的步骤如下: null1.在窗体上画出某控件,设置该控件的Index值为0,表示该控件为数组,这是建立的第一个元素,并可对一些取值相同的属性进行设置,如所有文本框的字体都取一样大小。
2.在编程时通过Load方法添加其余的若干个元素,也可以通过Unload方法删除某个添加的元素。
Load方法和Unload方法的使用格式:
Load 控件数组名(<表达式>)
Unload 控件数组名(<表达式>)
其中,<表达式>为整型数据。表示控件数组的某个元素。
3.通过Left和Top属性确定每个新添加的控件数组元素在窗体的位置,并将Visible 属性设置为True。 nullPrivate Sub Command1_Click(Index As Integer)
Select Case Index
Case 0
MsgBox "你单击的是“确定”按钮", vbOKOnly, "提示"
Case 1
MsgBox "你单击的是“取消”按钮", vbOKOnly, "提示"
End Select
End Subnull例:
Private Sub Form_Click()
Dim a As Variant
a = Array(1, 2, 3, 4, 5, 6, 7)
b = Array("One", "Two", "Three")
For i = 1 To 7
Print a(i);
Next i
Print
For i = 1 To UBound(b)
Print b(i); " ";
Next i
Print
End Sub
null算法思想:(将相邻两个数比较,小的调到前头)
1)有n个数(存放在数组a(n)中),第一趟将每相邻两个数比较,小的调到前头,经n-1次两两相邻比较后,最大的数已“沉底”,放在最后一个位置,小数上升“浮起”;
2)第二趟对余下的n-1个数(最大的数已“沉底”)按上法比较,经n-2次两两相邻比较后得次大的数;
3)依次类推,n个数共进行n-1趟比较,在第j趟中要
进行n-j次两两比较。2.冒泡法排序(递增)null原始数据 8 6 9 3 2 7
第1次排序 6 8 9 3 2 7
3 9 2 7
2 9 7
7 9
第一次排序后结果6 8 3 2 7 9
第2次排序 6 3 8 2 7
2 8 7
7 8
第二次排序后结果6 3 2 7 8第3次排序 3 6 2 7
2 6 7
第3次排序后结果3 2 6 7
第4次排序 2 3 6nullnullFor 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程序: