精华内容
下载资源
问答
  • VB.net中获取二维数组的元素个数

    千次阅读 2016-03-04 21:32:47
    Public Class Form1 Private Sub Form1_Click(sender As Object, e As EventArgs) Handles Me.Click Dim K(3, 4) As Integer TextBox1.Text = K.Length '获取整个数组的长度"Length" TextB
    Public Class Form1
        Private Sub Form1_Click(sender As Object, e As EventArgs) Handles Me.Click
            Dim K(3, 4) As Integer
            TextBox1.Text = K.Length       '获取整个数组的长度"Length"
            TextBox2.Text = K.GetLength(0) '获取第一维数组的长度"GetLength(0)"
            TextBox3.Text = K.GetLength(1) '获取第二维数组的长度"GetLength(1)"
        End Sub
    End Class

    运行结果如下:



    推荐文章:那些年,做的几个应用


    展开全文
  • VB语言怎么将变量名作为数组元素的名称呢?怎么给数组中每个数一个变量名?怎么在函数中调用数组的变量?
  • 数组的概念在VB中,如果把一组有序的数或变量作为一个整体来处理,这一组数或变量称为数组,数组中的每一个数或变量称为数组元素,每一个数组给定一个名称,叫做数组名,一个数组中各个数组元素之间的区别用数...

    数组讲解

    今天我们来学习有关数组的相关知识。

    为了解决大批量的数据处理问题,VB中提供了数组(Array)变量。数组是一种重要的数据结构,在许多程序设计语言中,都要直接或间接用到数组这种数据结构。

    数组的概念

    在VB中,如果把一组有序的数或变量作为一个整体来处理,这一组数或变量称为数组,数组中的每一个数或变量称为数组元素,每一个数组给定一个名称,叫做数组名,一个数组中各个数组元素之间的区别用数组名的下标来表示,放在数组名后的圆括号内。数组中的任意一个数组元素都可以存放一个数据,和使用简单变量一样,所以又称数组元素为下标变量。

    例如:用A来表示一个班50个同学的数学成绩,用A(1)表示1号同学的成绩;A(2)表示2号同学的成绩;A(3)表示3号同学的成绩;...;A(50)表示第50号同学的成绩。则A为数组名,A(1)、A(2)、A(3)等都称为A数组的元素。

    数组也有数值型和字符串型等类型之分。在一个数组中通常只能放置一种类型的数据,并且与数组的类型一致。

    此外,数组还有静态数组和动态数组之分。

    注意:在使用数组前通常都要对数组进行维数、类型及大小等内容的定义或说明。

    静态数组

    一、静态数组定义

    静态数组是在定义数组时就指定了数组维数的多少及数组的大小。

    1语法

    Dim  7354ef8d5ba37cf0f173b9b93266ff36.gif

    redim

    Static

    Public

    2、语法说明:

    (1)Dim:定义窗体模块数组。ReDim:在过程中定义。Static:在过程中定义。Public:在标准模块中定义全局数组。

    (2)数组名的命名规则和变量命名规则相同,但是数组名不能与一般变量同名。

    (3)凡是VB的数据类型,在数组中都可以说明和使用,当“As类型”省略时,为变体型数组(Variant)。

    (4)下限值和上限值的大小范围是从-32768至32767。下限值及关键字TO可以省略,当省略时下限值为0。使用数组时,其下标不能超出所定义的范围。下标可以是负数。

    (5)维数可以多达60维。

    (6)数组要先定义后使用。

    (7)在一个过程内部,数组名不能与某个变量同名。

    (8)Dim语句定义数据组,数值型元素置0,字符型元素置空字符串。

    (9)可用类型说明符说明数组类型。

    (10)若在定义时不指明下标,下标为0,这里可用Option Base 1定义下标为1。

    例子:数组定义举例

    定义的例子

    数组维数

    数组元素

    Dim A(5) As Integer

    整型

    一维

    A(0), A(1),A(2), A(3), A(4), A(5)

    Dim A(1 To 5) As String

    字符型

    A(1),A(2), A(3), A(4), A(5)

    Dim B(2,3) As Single

    单精度实型

    二维

    B(0,0)B(0,1)B(0,2)B(0,3)

    B(1,0)B(1,1)B(1,2)B(1,3)

    B(2,0)B(2,1)B(2,2)B(2,3)

    Dim B(1 To 2,1 To 3) As Integer

    ‘整型

    B(1,1)B(1,2)B(1,3)

    B(2,1)B(2,2)B(2,3)

    Dim C#(2,3,2) ‘双精度实型

    三维

    C(0,0,0)C(0,0,1)C(0,0,2)

    C(0,1,0)C(0,1,1)C(0,1,2)

    C(0,2,0)C(0,2,1)C(0,2,2)

    C(0,3,0)C(0,3,1)C(0,3,2)

    C(1,0,0)C(1,0,1)C(1,0,2)

    C(1,1,0)C(1,1,1)C(1,1,2)

    C(1,2,0)C(1,2,1)C(1,2,2)

    C(1,3,0)C(1,3,1)C(1,3,2)

    C(2,0,0)C(2,0,1)C(2,0,2)

    C(2,1,0)C(2,1,1)C(2,1,2)

    C(2,2,0)C(2,2,1)C(2,2,2)

    C(2,3,0)C(2,3,1)C(2,3,2)

    二、测试数组上、下标函数

    1、测试数组下标函数:Lbound(数组[,维])

    2、测试数组上标函数:Ubound(数组[,维])

    例子:

    Dim D(3, 5, 7,9) As String

    Private Sub Form_Click()

    Print LBound(D, 1),

    Print UBound(D, 1)

    Print LBound(D, 2),

    Print UBound(D, 2)

    Print LBound(D, 3),

    Print UBound(D, 3)

    Print LBound(D, 4),

    Print UBound(D, 4)

    End Sub

    结果显示:

    0    3

    0    5

    0    7

    0    9

    三、变体型(默认)数组

    若定义数组时不指定类型,则该数组是一个变体型数组。其元素的类型可以不同。

    即:Dim A(2,3)等同于:Dim A(2,3) As Variant

    例子:

    Dim A(5)

    Private Sub Form_Click()

    A(1) = "中华人民共和国"

    A(2) = 12345

     A(3) = 3456789

     A(4) = 987654321

     A(5) = "ABCDE" + "abcde"

     Print A(1)

    Print A(2)

    Print A(3)

    Print A(4)

    Print A(5)

    End Sub

    四、数组的操作

    数组的操作包括对数组元素进行数值的输入、输出和复制。

    1、数组元素的赋值

    方法一:用赋值语句对数组元素逐个赋值。

    例子:

    Dim A(5)

    Private Sub Form_Click()

     A(1) = "中华人民共和国"

    A(2) = 12345

     A(3) = 3456789

     A(4) = 987654321

     A(5) = "ABCDE" + "abcde"

     Print A(1)

     Print A(2)

     Print A(3)

     Print A(4)

     Print A(5)

    End Sub

    方法二:用赋值语句结合For循环语句。

    Dim D(0 To 2, 1 To 3) As Integer

    Private Sub Form_Click()

     For i = 0 To 2

       For j = 1 To 3

         D(i, j) = 100

         Print D(i, j)

       Next j

    Next i

    End Sub

    方法三:用InputBox函数。

    Dim array1(5) As Variant

    Private Sub Form_Click()

    For i = 1 To 5

     array1(i) = InputBox("输入元素的值:")

    Next i

    For i = 1 To 5

     Print array1(i)

    Next i

    End Sub

    方法四:对于 变体型一维数组,可应用Array()函数赋值。

    格式Array(值1,值2,值3… …)

    例子:设一个一维变体型数组ABC,不指定维数,用Array()函数赋值,然后显示元素值。

    Option Base 1

    Dim ABC

    Private Sub Form_Click()

     ABC = Array("One", "Two", "Three", "Four", 1, 2, 3, 4, 5, 6)

     For i = 1 To 10

       Print ABC(i)

     Next i

    End Sub

    2、数组元素值的输出

    用Print语句显示输出。前面有相应的例子。这里讨论如何进行“格式”输出。

    例子:设有一个单精度实型三维数组array2(2,3,4),其元素值:

    11 12 13 14

    15 16 17 18

    19 20 21 22

    31 32 33 34

    35 36 37 38

    39 40 41 42

    源程序如下:

    Option Base 1

    Dim array2(2, 3, 4) As Single

    Private Sub Form_Click()

    For i = 1 To 2

      For j = 1 To 3

         For k = 1 To 4

          array2(i, j, k) = InputBox("输入元素的值:")

    Next k

     Next j

    Next i

    For i = 1 To 2

      For j = 1 To 3

         For k = 1 To 4

           Print array2(i, j, k); "";

         Next k

         Print

     Next j

     Print

    Next i

    End Sub

    3、For Each … Next语句

    该语句是专门用于数组操作的语句。

    (1)语句格式

    For Each 成员 in 数组

    循环体

    [ Exit For]

    … …

    Next 成员

    (2)说明

    利用语句中的成员变量可实现数组元素的赋值、计算、显示等操作。

    例子:设一个二维数组array5(3,4),将其中的第一个元素赋值100,后面的元素依次再加1赋值

    Option Base 1

    Dim array5(3, 4)

    Private Sub Form_Click()

     n = 100

     For Each x In array5        ’x为成员

    x = n

       n = n + 1

       Print x

     Next x

    End Sub

    五、嵌套数组

    Visual Basic中,可以用一个数组作为另一个数组的元素。在使用时,可将一个数组(嵌套数组)赋值给另一个数组(被嵌套数组)的元素,嵌套数组名后面加空括号。

    要求:嵌套数组是数据类型,被嵌套数组不指定类型。

    例子:将数组a(4)赋给数组b(2)

    Dim a(4) As Integer

    Dim b(2)

    Private Sub Form_Click()

    For i = 1 To 4

     a(i) = i

     Next i

     b(1) = a()

    b(2) = a()

    Print b(1)(1)

    Print b(1)(2)

    Print b(1)(3)

    Print b(1)(4)

    Print

     Print b(2)(1)

    Print b(2)(2)

    Print b(2)(3)

    Print b(2)(4)

    End Sub

    动态数组

    动态数组是指其数组的维数及大小可以重新定义,根据应用的环境不同随时说明其维数及大小。“动态数组”是由变量作为下标的数组,其下标在程序运行时完成定义。

    一、动态数组的定义

    第一步:用Dim语句或Public语句定义一个只有空括号而无下标的数组。

    第二步:用ReDim定义带下标的数组。语句的格式:

    ReDim [Preserve] 变量(下标) As 类型

    在定义时,类型与Dim语句中的类型要一致。下标通过变量赋值解决。

    例子:

    Dim A() As Integer

    Private Sub Form_Click()

    n = InputBox("输入n的值:")

    ReDim A(n)

    For i = 1 To n

     A(i) = 12345

     Print A(i)

    Next i

    End Sub

    可以动态地定义多个数组。例子:

    Dim A() As Integer, B() As Integer

    Private Sub Form_Click()

    n = InputBox("输入n的值:")

    m = InputBox("输入m的值:")

    ReDim A(n, m)

    ReDim B(n, m)

    For i = 1 To n

      For j = 1 To m

        A(i, j) = 12345

        B(i, j) = 23456

        Print A(i, j), B(i, j)

    Next j

     Next i

    End Sub

    二、数组的清除和重定义

    数组一经定义,在内存中会分配相应的存储单元,其大小是不能改变的。即:在一个程序中,同一个数组只能定义一次。若清除数组内容或重新定义,要使用Erase语句。

    格式:

    Erase 数组名[,数组名]… …

    例子:

    Erase A,B,C

    1、清除静态数组的影响

    数组类型

    对元素的影响

    数值类型数组

    将元素值置0

    字符类型数组(变长)

    将元素值设为空字符串

    字符类型数组(定长)

    将元素值置0

    变体类型数组

    将元素值设为Empty

    用户定义类型数组

    将元素设为单独的变量

    对象数组

    将元素值设为Nothing

    例子:

    Dim A(3) As Integer

    Private Sub Command1_Click()

    For i = 1 To 3

       A(i) = 12345

       Print A(i)

    Next i

    End Sub

    Private Sub Command2_Click()

    Erase A

     For i = 1 To 3

       Print A(i)

    Next i

    End Sub

    2、清除动态数组的影响

    (1)系统会删除数组结构,并释放内存空间。

    (2)下次引用动态数组前,要用ReDim语句重新进行定义。

    三、数组应用算法--数据统计

    利用数组进行数据统计运算

    利用随机函数生成十个100以内的随机整数,计算出这十个数的总和及其平均值,并输出这十个数、总和及其平均值。

    问题分析对象设置把结果使用Print方法直接输出到窗体中,不用设置专用对象

    程序代码

    DimA(10)AsInteger

    Dim B As Single

    Sub Form_Load()

    Form1.Show

    Print  " 十个整数为:"

    For i=1 To 10             '循环产生10个随机整数

    A(I)=Int(Rnd*100)   '生成随机第i个整数

    PrintA(I);             '显示第i个数

    A(0)=A(0)+A(I)   '累加求和

    Next i

    Print

    B=A(0)/10            '求平均值

    Print "总和为:";A(0)

    Print "平均值为:";B

    End  Sub

    大家在学习过程中有不懂之处,可以添加微信号:vbyjk521 ,学习问题在线答疑。

    96685dffcc3eb7e733ff560d07c2093b.png

    4ce8afc8fb11b06e757e7520c06dab88.png



    046f1a1e6641590ae0d6bd6cc4b289ee.gif570e1652c53a53bdfaf1b2085750c4c8.png

    长按上图,关注跟我学VB公众平台

    更多VB知识,尽在跟我学VB

    展开全文
  • 常见的一种应用是把一个长度为n的数组a,等分成n\k段(其中每段元素个数为k),若最后有不足k个元素,则自成一段。给每段设置一个编号,问下标为i的元素所在段的编号num是多少?题目要求的是段编号num和元素下标i的...
    df28e5350161976354d569f9c93bc869.png说在前面

    分段数组是近年来选考VB中的热门考点,各种联考卷或模拟卷中也出现了大量相关的题目。常见的一种应用是把一个长度为n的数组a,等分成n\k段(其中每段元素个数为k),若最后有不足k个元素,则自成一段。给每段设置一个编号,问下标为i的元素所在段的编号num是多少?

    题目要求的是段编号num和元素下标i的关系。如果我们默认数组元素下标从0开始(很多编程语言都是这样做的),段编号也是从0开始,那么很容易得到:num = i \ k但是,我们在平时的VB教学中,为了适应学生的思维习惯,通常设置数组元素下标从1开始,段编号也从1开始。(顺便说一句,这种处理方法虽然符合日常的思维习惯,但是为编程带来了不利,因为从变量寻址的角度来说,设置第一个数组元素的下标为0,更便于编写代码)。稍作分析,也可以得到表达式:num = (i – 1) \ k + 1两式对比一下,其实就是先让元素下标i1,使得数组元素下标从0开始,这样可以得到从0开始的段编号;再让段编号加1,使得段编号从1开始。理解了上述两个表达式以后,我们就可以利用它解决一些看似复杂的分段数组问题了。

    2019学年第一学期浙江“七彩阳光”联盟期初联考第16

    题目

    16.某字符转置算法描述如下:

    将字符串(均为大写字符) s依次转换为相对应的数值(字符A ~Z对应数值1~26)

    转换后的数值以K个数据为段,将n个待处理的数据依次分割成若干段(最后一段不足部分用0来补充);

    每一段中K个数据与K*K转置矩阵进行乘法运算;

    将乘法运算得到的每一个结果值除以26求余数,依次转换成相应字符(数值1~26对应字符A~Z),最后按原始字符串长度输出。

    乘法运算规则如下:

    i个元素c(i)= j个元素a(j)*转置矩阵第i行第j个元素b(t)的乘积之和(其中j=1,2..k)

    例如:字符串s= “PYTHON”,区块大小K=4的转置过程如下:

    9b60308a53a93fda12e5806344f901d8.png

    cbec7ed9bda0ea6c6ed4a4171fc7d58d.png

    (1)根据算法描述,上述示例中,字符“N”的相乘结果(即图中())____

    (2)请在划线处填入合适代码。

    Private Sub Command1_Click()

        Dim a(1 To 100) As Integer  '存储字符串,长度不超过100个字符

        Dim b(1 To 100) As Integer  '存储转置矩阵,长度不超过10*10

        Dim c(1 To 100) As Long

        Dim s As String, tmp As String:

        Dim k As Integer, t As Integer, i As Integer, j As Integer

        Dim n As Integer, m As Integer, lens As Integer

        s = Text1.Text 'Text1中输入原始字符串

        k = Val(Text2.Text) 'Text2中输入区块大小k

        Randomize

        For i = 1 To k ^ 2

            b(i) = Int(Rnd * 9) + 1

            tmp = tmp + Str(b(i))

            If i Mod k = 0 Then

                List2.AddItem tmp

                tmp = ""

            End If

        Next i

        lens = Len(s): n = lens

        For i = 1 To n

            tmp = Mid(s, i, 1)

                         

            List1.AddItem Str(a(i))

        Next i

        Do While n Mod k = 0

            n = n + 1

            a(n) = 0

            List1.AddItem Str(a(n))

        Loop

        For i = 1 To n

            m = (i - 1) Mod k + 1

            t = 1

            For j =                       

                c(i) = a(j) * b((m - 1) * k + t) + c(i)

                t = t + 1

            Next j

        Next i

        For i = 1 To n

            List3.AddItem Str(c(i))

        Next i

        s = ""

        For i = 1 To lens

                        

            s = s + Chr(t + 64)

        Next i

        Text3.Text = s

    End Sub

    考查知识点分段数组、矩阵乘法、字符串转换。要求学生熟练字符串转换基本操作,理解分段数组中段编号num和元素下标i的关系,能根据题意分析各个变量的含义,理解算法思想。三解析

    此题背景信息繁复,数据结构复杂,涉及变量较多,很考验学生的阅读理解能力。但算法说明还算清晰,示例数据也很恰当,示意图简明易懂,如果有足够时间,应该不难理解题意。

    当然因为使用自然语言对算法进行描述很难做到完全准确,有些不精确的措辞对读者进行了误导,例如题目中对乘法运算规则的描述就不够准确,最后一步所谓“将乘法运算得到的每一个结果值除以26求余数”,也不是精确的描述。

    第一小题计算式:15*5+14*1+0*2+0*9 = 89

    第二小题第①空所在的代码段(for循环)的作用是将字符串 s依次转换为相对应的数值,并输出到列表List1。其中第①空的作用将大写字母tmp转换为相对应的数值(字符A ~Z对应数值1~26),故答案为a(i) = Asc(tmp) - Asc(A) + 1。

    第③空所在的代码段(for循环)的作用是将c(i)依次转换成转置后的字符,并拼接成字符串s。其中第③空的作用是将c(i)转换成与字符相对应的数值t,因为数值1~26对应字符A~Z,故不能把t简单理解成c(i) Mod 26,否则会使得0<=t<=25。要想t的范围是1~26,则必须写成t = (c(i) – 1 ) Mod 26 + 1

    当然,也可以用语句t = c(i) Mod 26 : s = s + Chr(t + 65)代替原来循环体内代码。

    本题最难的是第②空。其所在二重循环语句的作用是依次将每一段中K个数据与K*K转置矩阵进行乘法运算。

    其中变量i代表第i个字符,我们将字符串分段,每段k个元素,则m代表a(i)在所属段中的位置,我们让a(i)所在段的元素分别与转置矩阵中第m行对应的元素相乘,再求和,即得到与a(i)对应的c(i)

    程序让变量j遍历a(i)所在段的所有元素,让变量t遍历转置矩阵中第m行的每一个元素,即mt分别代表转置矩阵中各元素的行号和列号。

    因为a(i)在其所属段中排行m,故a(i)所属段中第一个元素的下标为i – m + 1,最后一个元素的下标为i – m + k。则第②空答案为i - m + 1 To i - m + k

    除此之外,我们也可以从另外一个角度得到第②空答案:

    我们设a(i)所在段的编号为num = (i – 1) \ k + 1,则该段第一个元素的下标为(num-1)*k+1,最后一个元素的下标为num*k。则第②空答案为((i - 1) \ k) * k + 1 To ((i - 1) \ k) * k + k

    答案

    (1) 89     (1分)

    (2) ① a(i) = Asc(tmp) - 64 或 a(i) = Asc(tmp) - Asc(A) + 1    (2分)

    ② i – m + 1 To i – m + k      

    或((i - 1) \ k) * k + 1 To ((i - 1) \ k) * k + k 或其他等价表达式 (2分)

    ③t = (c(i) – 1 ) Mod 26 + 1  (2分)

    五拓展思考

      16.【浙江省名校新高考研究联盟(Z20联盟)2020届第一次联考】给定一个数组 a,有 n 个元素(1n100),有以下两种操作:

    操作 1:在文本框中分别输入 LRT(1LRn),对数组下标为LR之内(包含LR))的每个元素增加 T(1T100)

    操作 2:在文本框中输入 K(1Kn),在标签中输出a(K)的值。

    为了提高算法的效率,小明设计了如下算法,以 n=10 为例,如下表所示。

    数组下标

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    元素的值

    7

    12

    3

    6

    7

    11

    8

    24

    9

    5

    ffb622801915c928ffd1845f399fe4a8.png

    80663bb47749683a6b513cd230318627.png

    4)对于操作2,若输入K的值为5,则输出a(5)的值,a(5)的值为该数组元素的值+段标记值,即a(5)=12。程序运行界面如下。请回答下列问题:

    (1)若数组元素为“3,2,6,8,7,9,3, 4, 7, 9,6",依次进行以下3次操作后第3段的标记值为   

    操作1:依次输入1, 11,1

    操作1:依次输入7,9,2    

    操作2:输入8

    9fac4548e3e827328a10e98f757c6b01.png

    (2)请在划线处填入合适的代码。

    Const n = 10

    Dim a(1 To n) As Integer

    Dim f(1 To n) As Integer 'f数组元素依次表示每段的标记值

    Dim bk As Integer  ' bk表示每段的元素个数

    Function BL(x As Integer) As Integer ' BL函数返回数组元素a(x)的段编号

        BL =                 

    End Function

    Private Sub Form_Load()

        '读取数据,并存储到数组a中,代码略

        bk = Int(Sqr(n))

    End Sub

    Private Sub Command1_Click()

        Dim L As Integer, R As Integer, T As Integer, i As Integer

        L = Val(Text1.Text): R = Val(Text2.Text): T = Val(Text3.Text)

        If BL(L) = BL(R) Then

            For i = L To R

                a(i) = a(i) + T

            Next i

            Else

            For i =                      

                a(i) = a(i) + T

            Next i

            For i = BL(L) + 1 To BL(R) - 1

                f(i) = f(i) + T

            Next i

            For i = (BL(R) - 1) * bk + 1 To R

                a(i) = a(i) + T

            Next i

        End If

    End Sub

    Private Sub Command2_Click()

        Dim K As Integer

        K = Val(Text4.Text)

        Label5.Caption = "经过一系列操作后,a(" + Str(K) + " )的值为:" +              

    End Sub

    六拓展思考答案

    (1)(1 分)

    (2)①(x - 1) \ bk + 1  (2 分)

    L To BL(L) * bk  (2 分)

    Str(a(K) + f(BL(K)))  (2 分)

    写在后面

    为了保证解析的原创性和思维的独特性,我都是独立解题后,先不看答案(除非题目不会做),直接把解析写好,再去看答案。

    当然,如果发现参考答案有更好的思路,我还是很乐于学习和借鉴的。同时,由于本人水平有限,解析中难免出现疏漏甚至错误之处,敬请谅解。

    无论是赞同还是反对我的看法,都请你给我留言。如果你有新的想法,千万不要憋在心里,请发出来大家一起讨论。让我们相互学习,共同进步!

    需要本文word版的,可以加入“选考VB算法解析”知识星球参与讨论和下载文件,“选考VB算法解析”知识星球汇集了数量众多的同好,更多有趣的话题在这里讨论,更多有用的资料在这里分享。

    我们专注选考VB算法,感兴趣就一起来!

    5a1816153627621bc4905e1fbda50f7b.png

    相关优秀文章:

    阅读代码和写更好的代码

    最有效的学习方式

    选考VB算法解析之2018年11月高考真题卷第16题

    选考VB算法解析之2018年11月高考真题卷第17题

    选考VB算法解析之2019年4月高考真题卷第16题

    4af9100ef7bc2bc2fa6eecc359159866.png

    展开全文
  • 数组的下标有上界与下界,数组元素在下界与上界之间连续分布。使用数组比使用单个变量的好处在于,可以通过对下标的操作来简化程序。今天我们共同来看一下数组合并排序的实现。程序运行图代码如下:Dim a() As ...
    52f9563173fb7166f0366b4c3ed9b720.png数组:以一个变量名引用一组变量,用不同的下标数字来区分具体某个元素。数组的下标有上界与下界,数组元素在下界与上界之间连续分布。使用数组比使用单个变量的好处在于,可以通过对下标的操作来简化程序。

    今天我们共同来看一下数组合并排序的实现。

    7fe067247326fcc7e4cd98638cce3683.png

    程序运行图


    代码如下:

    Dim a() As Variant, b() As Variant, c(1000) As Variant '声明数组

    Private Sub Form_Load() '数组初始化

        a = Array(2, 4, 6, 8, 10)

        b = Array(1, 3, 5, 7, 9, 11, 13, 15) '用Array函数给数组赋初值

    End Sub

    Private Sub Command1_Click() '合并排序

        For i = 0 To UBound(a) '输出数组a里的所有元素

             Picture1.Print a(i);

        Next i

        For i = 0 To UBound(b) '输出数组b里的所有元素

              Picture2.Print b(i);

        Next i

        Call meargesort(a, b, c) '调用合并子过程,完成合并操作

        For i = 0 To UBound(c) '合并后的结果存在数组c里

             Picture3.Print c(i); '输出数组c里的所有元素, 即合并后的结果

        If (i + 1) Mod 5 = 0 Then Picture3.Print  '每输出5个换一次行

            Next i

    End Sub

    Public Sub meargesort(aa() As Variant, bb() As Variant, cc() As Variant) '自定义的子过程

    Dim ia As Integer, ib As Integer, ic As Integer

    Do While ia <= UBound(aa) And ib <= UBound(bb)  '设置进行合并的条件循环

      If aa(ia) < bb(ib) Then    '两个数组里的元素依次进行比较

       cc(ic) = aa(ia): ia = ia + 1 '把较小的数组元素赋给新数组

     Else

       cc(ic) = bb(ib): ib = ib + 1 '哪个数组赋过值,相应的计数器计数

    End If

    ic = ic + 1 '给新数组统计下标数

    Loop

    Do While ia <= UBound(aa) '如果aa数组还有剩余元素则全部赋给新数组

      cc(ic) = aa(ia): ia = ia + 1: ic = ic + 1

    Loop

    Do While ib <= UBound(bb) '如果bb数组还有剩余元素则全部赋给新数组

     cc(ic) = bb(ib): ib = ib + 1: ic = ic + 1

    Loop

    End Sub

    fce57de1d00b150c214a4f45e854dba9.gif4d0207a1f50fd972f4fbabcaf7355375.png

    有VB学习问题,可长按识别下图添加老师微信号在线答疑。

    3831b5b618d1628fa1a8ce6a8ce6d848.png

    展开全文
  • 数组的概念在VB中,如果把一组有序的数或变量作为一个整体来处理,这一组数或变量称为数组,数组中的每一个数或变量称为数组元素,每一个数组给定一个名称,叫做数组名,一个数组中各个数组元素之间的区别用数...
  • 常见的一种应用是把一个长度为n的数组a,等分成n\k段(其中每段元素个数为k),若最后有不足k个元素,则自成一段。给每段设置一个编号,问下标为i的元素所在段的编号num是多少?题目要求的是段编号num和元素下标i的...
  • arrm(0,0)=3arrm(0,1)=0这是向数组arrm(的第0排的第0地址赋值3...至于0,0 0,1是二维数组的下标,即数学中的坐标看下图你就明白了就如你的arrm数组在定义时 定义了2排3列的数据第1数据第2数据第3数据第0排1...
  • VB数组性能比较测试

    2008-01-04 09:58:06
    看到很多人热衷于讨论什么“VB模拟指针”之类的技术,似乎很高深,其实这东西它只是基于一很简单的原理:在内存中多维数组和单维数组的排列是一样的,但是多维数组在寻址的时候(也就是调用某个数组元素的时候)需要...
  • 1.(2016高二下·安吉期中)用VB编写一模拟在900观众中产生10中奖号码程序,每位观众用三位数字进行...②找到新产生号码存放的数组下标:从下标为1的数组元素开始,新号码(第i号码)分别与他们进行一一比较...
  • 上节课我们已经学习了数组的基本概念,本节课程我们来一起学习数组的分类,以及它们的声明方法。数组分类:首先根据维,数组可以被分为一维数组和多维数组。其次根据是否可以被重新定义,数组可以分为静态数组和...
  • ‍数组讲解各位朋友,今天我们来学习...数组的概念在VB中,如果把一组有序的数或变量作为一个整体来处理,这一组数或变量称为数组,数组中的每一个数或变量称为数组元素,每一个数组给定一个名称,叫做数组名,一个...
  • ‍数组讲解各位朋友,今天我们来学习...数组的概念在VB中,如果把一组有序的数或变量作为一个整体来处理,这一组数或变量称为数组,数组中的每一个数或变量称为数组元素,每一个数组给定一个名称,叫做数组名,一个...
  • 案例说明本案例实现了如何在删除数组中的任意位置的一元素,使数组成为一新的数组。效果如下图所示。...删除一个数组元素时,需要逐一将要删除元素后面的元素前移一位置,最后在利用redim方法...
  • "100#200#0" "200#120#0" ...我有个数组(如上),我想把每元素第一#前面相同的数字的元素过滤掉, 最终得到 "100#200#0" "200#120#0" "300#980#0" "400#220#0" "500#400#0" "600#450#0" 有人能帮帮我吗!
  • VB中动态数组的使用事项

    千次阅读 2019-02-27 16:05:14
    1.动态数组的使用时,先在窗体层、标准模块或过程中声明一没有下标的数组(括号不能省略),不...注意:用ReDim定义的数组,只能改变数组元素的个数,不能改变数组的和数据类型。 以下举例几错误类型: ...
  • vb.net 数组定义详解

    千次阅读 2017-08-10 16:53:13
    数组的元素下标是连续的。由于vb.net对每一索引值都分配空间,所以不要不切实际地声明一太大的数组。 在vb.net中,所有的数组都是以“0”为起始长度的,这与vb 6.0完全不一样,在vb 6.0中,如果写下以下语句...
  • VB讲课笔记08:数组

    千次阅读 2018-03-12 18:01:30
    VB讲课笔记08:数组学习目标:理解数组的概念、掌握数组的声明、引用方法,掌握数组的使用以及与数组有关的常用算法;...1、数组与数组元素将一组排列有序的、个数有限的变量作为一个整体,用一个...
  • 我们可以看到原始组中,有很多0的元素,占用了很多的空间,那么我们的目的就是把这些0的元素去掉,然后压缩一下这二维数组,把它变成一稀疏数组。如下所示本来占用的空间是11x11 现在是3x3是不是减少了很多的...
  • 【以下资源来自MSDN】 Array.Rank 属性 获取 Array 秩(维)。... Array.Length 属性 获得一 32 位整数,该整数表示 Array 所有维元素的总数。 Array.CreateInstance 方法 初始化 Array 类新实例 e.g.
  • VB中非常有用的数组

    千次阅读 2008-04-29 09:43:00
    数组的概念1.引例 求100学生的平均成绩及超过平均成绩的人数。 如果用一般变量来表示成绩,需要用100变量,如:mark1、mary2、……mark100。若用数组,可以只用一来表示mark(1 To 100)。2.基本概念 ...
  • 数组的解剖学

    2014-11-22 13:53:10
    C/C++的数组不同于VB等语言的数组,是有层次的,这层次指的不是维度,而是象俄罗斯有名的套娃一样,一维套一维,亦即数组的嵌套,数组的元素也是数组,VB等语言的数组与之相比更像一平面。   数组嵌套这...
  • 1、有个元素的数组元素数量经常会变化,假定是用split分割一长串数字得到,这串数字有大量"/"作为数字分隔符,即除"/"之外全是数字和小数点),分割得到个元素要转换一下格式(比如转换为时分秒格式:1:3:...
  • VB.Net学习笔记(数组

    千次阅读 2004-05-17 18:19:00
    并且数组的元素类型是强类型,即数组中所包含的每一元素都必须是相同的类型。Array对象在VB.Net中使用Dim iArr(5) As Int32这种语法表示的数组实际上是声明了一Array对象的实例。Array对象是位于System命名空间...
  •  C/C++的数组不同于VB等语言的数组,是有层次的,这层次指的不是维度,而是象俄罗斯有名的套娃一样,一维套一维,亦即数组的嵌套,数组的元素也是数组,VB等语言的数组与之相比更像一平面。 
  • 第三章 数组的解剖学

    2015-05-21 09:41:00
    C/C++的数组不同于VB等语言的数组,是有层次的,这层次指的不是维度,而是象俄罗斯有名的套娃一样,一维套一维,亦即数组的嵌套,数组的元素也是数组,VB等语言的数组与之相比更像一平面。 数组嵌套这现象...
  • 一维数组定义Dim 数组名(n) As 数据类型,注意n是数组最大索引值,不是数组元素个数,索引值必须从0开始定义并赋值Dim 数组名()={元素0数据,元素1数据,...,元素n数据}调整数组元素个数使用ReDim命令,重新...
  • 第三章 数组的解剖学

    2010-12-07 10:15:00
    C/C++的数组不同于VB等语言的数组,是有层次的,这层次指的不是维度,而是象俄罗斯有名的套娃一样,一维套一维,亦即数组的嵌套,数组的元素也是数组,VB等语言的数组与之相比更像一平面。 数组嵌套这...
  • Array(数组)是JavaScript中较为复杂的数据类型,同Java、C#、VB等程序语言的数组相比,Javascript数组的元素不必为相同的数据类型,可以在数组元素上混合使用数字、日期、字符串、Object,甚至添加一嵌套...
  • 1126:矩阵转置时间限制: 1000 ms内存限制: 65536...接下来n行,每行m整数,表示矩阵A的元素。相邻两整数之间用单个空格隔开,每元素均在1~1000之间。【输出】m行,每行n整数,为矩阵A的转置。相邻两整数...

空空如也

空空如也

1 2 3 4 5
收藏数 96
精华内容 38
关键字:

vb数组的元素个数