a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 38|回复: 0

[Visual Basic] 2011年度计算机等级考试二级VB基础教程(21)

[复制链接]
发表于 2012-7-31 22:10:12 | 显示全部楼层 |阅读模式
 5.3动态数组及声明  1. 动态数组的建立与声明
3 Y$ ^& Q+ S* Q  建立动态数组的方法是:利用Dim、Private、Public语句声明括号内为空的数组,然后在过程中用ReDim语句指明该数组的大小。语法是:
  H8 K" @( o- f8 ?/ {  C  ReDim 数组名(下标1[,下标2…]) [As 类型]+ ^7 m( I4 P- c5 q7 `9 R2 i
  其中下标可以是常量,也可以是有了确定值的变量,类型可以省略,若不省略,必须与Dim中的声明语句保持一致。
% N) X+ H! y* t& y0 g- T  例: Dim D() As Single
0 T* |9 P5 D- Z0 F  Sub Form_Load()
: T+ Q/ G8 \) I  W( Q2 b  ……
0 p) d6 A1 F+ [" q) Y  ReDim D(4,6): m+ B3 {  R1 ^* g; o
  ……
4 g" f4 Z7 H' V8 d  End Sub
( S, i) b7 H% V" ^" O, B7 Q3 m( v! [; D  2.注意事项- {- |6 F- g+ @" I& l
  (1)在动态数组ReDim语句中的下标可以是常量,也可以是有了确定值的变量。
" R$ j& V) l8 @6 _9 e3 j, ]  (2)在过程中可以多次使用ReDim来改变数组的大小,也可改变数组的维数。
+ O% i2 _3 w& R" b' H# v0 i% _9 O  (3)每次使用ReDim语句都会使原来数组中的值丢失,可以在ReDim语句后加Preserve参数来保留数组中的数据,但使用Preserve只能改变最后一维的大小,前面几维大小不能改变。6 [- ^3 n, ^6 j6 H# A
  1. 给数组元素赋初值
* v8 D" Z% d' n5 b3 k& j5 f2 k  (1) 利用循环结构
( }2 I" i) N6 U0 y7 B! j  V  例:Dim iA(1 To 10) As Integer# R. _; Z& R* D: N
  For i=1 To 10) g/ z- x8 U* x0 t0 _
  A(i)=0
0 e' z3 O% ]9 S* O/ }  Next i1 C" A9 F- v2 r" k& i
  (2) 利用Array函数- g0 L, _/ G$ W  X7 p# h7 q( i- F
  例:Dim a As Variant, b As Variant, i%
+ q+ u  W6 o& G; a6 m  K  a = Array (1,2,3,4,5)7 G% h6 [: y. @* Y! w
  b = Array ("abc","def","67")
% G) G, e9 i) a  For i=0 To Ubound (a)
% L& |  O% e: h* ]4 r0 ~  Picture1.print a(i);"";7 M8 p8 r$ o8 ]' x+ D2 E
  Next i
% s. ~8 p9 Y$ S  l$ \, ]5 E  For i=0 To Ubound (b)
# g7 o9 m. k/ t1 Q) C4 n  Picture1.print b(i);"";; e" F; [* I5 `& J
  Next i
6 `. m. f$ I9 k$ M& r9 l7 {% ?5 h  2.数组的输入3 W0 L( p9 W' R
  (1) 通过InputBox函数输入适合输入少量数据。+ ?# `' R+ T$ E6 `( u
  例:Dim sB(3,4) As singer; r9 c5 v! s2 h" u
  For i=0 To 3
+ K) ]3 Q9 Z. Z. P  For j=0 To 4
6 x. n/ h. E0 `( T# s6 X  SB(i,j) =InputBox("输入" & i & j & "的值")
& b3 `3 k, X$ Q* s6 K- G6 M  Next j
# |4 ]. ]1 ?" Z, h4 ]! u( A$ I  Next i
1 ^/ L2 Y& c& l$ h  (2) 通过文本框控件输入% r  W- \9 K0 ?% C3 V  N6 g5 b7 J, h
  对大批量的数据输入,采用文本框和函数split()\join()进行处理,效率更高。+ E: O! s% c! Z3 f, D, V$ h4 B2 e
  3.数组的赋值
2 i- Z3 g( T, B; b  在VB6.0中可以直接将一个数组的值赋值给另一个数组:
, F0 v# o% h- ]# Q  Dim a(3) as integer, b() as integer& y1 Y8 t  v7 _: x% @# z7 b
  A(0)=2: A(1)=5: A(2)=-2: A(3)=29 w2 `4 N2 z: C: p/ ?- W- M5 y
  b=a
8 o- m3 Q. w0 Q1 @  l5 {. ?; ]7 r  在早期的VB中,这需要用循环语句才可以实现:
$ E8 T2 G& S3 n4 n  ReDim b(UBound(a))6 _" c2 y( j( V, \7 D3 I8 ~( }
  For I=0 to UBound(a)
" I6 @8 l4 I4 N  D4 e  b(I)=a(I)
2 @8 P1 b' h$ t. V. f  Next i
8 E4 |. A; B# Q' l: t/ M- |  注意:(1)赋值号两边的数据类型必须一致;
. K( [5 [; N  Z) C( H  p$ f  (2)如果赋值号左边的是一个动态数组,则赋值时系统自动将动态数组ReDim成右边相同大小的数组;* p3 ^8 L3 k9 g! Y
  (3)如果赋值号左边的是一个大小固定的数组,则数组赋值出错。
! j2 J0 Z" D! ~0 e/ U  4.数组的输出$ P! X) D$ m% E
  用For……Next循环语句输出。
2 s: p6 \8 e$ v5 u/ O( q) s  5.求数组中最大元素和所在下标及各元素之和, B- {; ^* R% R3 A' r3 a
  求数组中最大元素及下标,一般假设第一个元素及下标为最大,然后将该数与数组中的其他元素逐一比较,若有比其大的就替换,同时替换下标。
: g% e; T. ?& s& i( `# g8 W. |  6.交换数组中各元素$ p( r# e/ B$ X/ @3 I) V1 T- X
  交换的要求是将数组第一个元素与最后一个交换,第二个与倒数第二个交换,依次类推。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-18 07:57 , Processed in 0.533228 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表