背景:                 
[本书目录] [图书首页] [本书讨论区]  
链接地址:http://www.17xie.com/read-3366.html    注册17xie 一起来写书 实现您的出书梦想!

'数字09Click事件

Private Sub cmdnum_Click(Index As Integer)

    If Flag Then lblscreen.Caption = "": Flag = False

    lblscreen.Caption = lblscreen.Caption + cmdnum(Index).Caption

End Sub

 

'CEClick事件

Private Sub cmdreset_Click()

    lblscreen.Caption = ""

    Num1 = 0

    Num2 = 0

End Sub

 

'=的Click事件

Private Sub cmdresult_Click()

    Dim result As Single

    Num2 = Val(lblscreen.Caption)

    Flag = True

    Select Case Cul

        Case 0: result = Num1 + Num2

        Case 1: result = Num1 - Num2

        Case 2: result = Num1 * Num2

        Case 3

                If Num2 <> 0 Then

                    result = Num1 / Num2

                Else

                    MsgBox "出错!被0除!"

                End If

    End Select

    If result \ 1 <> result Then             'result不是整数时

        lblscreen.Caption = Format(result, "0.#")

    Else

        lblscreen.Caption = Str(result)

    End If

End Sub

 

'±的Click事件

Private Sub cmdsign_Click()

    If lblscreen.Caption <> "" Then

        If InStr(lblscreen.Caption, "-") = 0 Then

            lblscreen.Caption = "-" + lblscreen.Caption

        Else

            lblscreen.Caption =  _

Right(lblscreen.Caption, Len(lblscreen.Caption) - 1)

        End If

    End If

End Sub

4.4.6  数组函数与For EachNext语句

1.数组函数

1Array函数

Array函数是将元素列表中的数据赋给一个Variant型数组的数组元素。

格式:Array (元素列表)

说明:

l          元素列表由各种类型的数据组成,这些数据用逗号分隔。如果元素列表中不包含任何元素,则该函数创建一个元素个数为0的空数组。

l          没有被声明为数组的Variant型变量也可以表示数组。除了定长字符串以及用户自定义类型数据之外,Variant变量可以表示任何类型的数组。

2Lbound(下界)函数

返回数组可用的最小下标,其中维数表示求哪一维的下界。

格式:Lbound (数组名[,维数]

说明:变量参数为数组变量名。【维数】是可选参数,可以是任何有效的数值表达式,表示求哪一维的下界。1表示第一维,2表示第二维,依次类推。如果省略该参数,则默认为1

3Ubound(上界)函数

返回数组可用的最大下标,其中维数表示求哪一维的上界。

格式:Ubound (数组名[,维数]

2For EachNext语句

For EachNext语句与ForNext循环语句类似,它是对数组中的每一个数组元素重复执行同一组语句序列。如果不知道一个数组有多少个数组元素,使用For EachNext语句是非常方便的。

格式:

For Each 变量 In 数组

    循环体

Next 变量

说明:

1)变量是一个Variant类型变量,代表数组中的每个元素。

2)数组是一个数组名,没有括号和上下界。

 

【实例4.25  For EachNext语句求1+2+3++100的值。

打开代码编辑窗口,在其中输入如下代码:

Private Sub Form_Click()

    Dim x(100), a

    Dim i As Integer, s As Integer

    For i = 1 To 100

        x(i) = i

    Next i

    For Each a In x()

        s = s + a

    Next

    Print s

End Sub

4.4.7  数组的应用

【实例4.26  求矩阵A中每一行的最小值以及最小值所在的列。

程序界面如图4-37所示。打开代码编辑窗口,在其中输入如下代码:

4-37  程序运行界面

Const N = 4

Dim A(N, N) As Integer

Private Sub cmdLinemin_Click()

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

    For i = 1 To N

        k = 1

        For j = 2 To N

            If A(i, j) < A(i, k) Then k = j

        Next j

        Print "" & i & "行的第" & k & "列元素" & A(i, k) & "为最小值"

    Next i

End Sub

 

【实例4.27  n个人围成一圈,他们的编号为1n,第一个人从1开始报数,凡报到3的人出列,后一个继续从1开始报数,报到m的出列,如此下去,直到最后一个人出列为止,输出依次出列的人的序号。程序示意图如图4-38所示。

4-38  示意图

令数组的元素值和编号相等,k为出列人数,m为每次的报数,当m3时,当前编号对象出列,并且出列后将元素值设置为0,这样在继续报数时将其跳过。

打开代码编辑窗口,在其中输入如下代码:

Private Sub Form_Click()

    Dim a() As Integer, n As Integer, i As Integer

    Dim k As Integer, s As Integer, m As Integer

    n = Val(InputBox("请输入人数"))

    ReDim a(n)

    For i = 1 To n                  

        a(i) = i

    Next i

    Print "依次出列的顺序:"

    Do While k < n

        s = s Mod n + 1

        If a(s) <> 0 Then

            m = m + 1

            If m = 3 Then

                Print a(s);

                a(s) = 0

                k = k + 1

                m = 0

            End If

        End If

    Loop

    Print

End Sub

 

【实例4.28  随机产生10120间各不相同的数存放在数组中。

本题中主要需要解决【各不相同】,改变随机数产生的公式并不能保证产生的数据不相同,因此,必须通过比较判断实现。具体实现的方法是:逐个产生随机数,并和之前产生的数据比较,若有与之相同的数则重新产生,若没有则放入数组相应位置。

打开代码编辑窗口,在其中输入如下代码:

Private Sub Form_Click()

    Dim a(10) As Integer, x As Integer

    Dim i As Integer, j As Integer

    Randomize

    For i = 1 To 10

        x = Int(20 * Rnd) + 1

        For j = 1 To i - 1

            If x = a(j) Then Exit For

        Next j

        If j = i Then    'x与前面产生的数都不相等

            a(i) = x

        Else

            i = i – 1     '使For循环的循环变量i在进入下一次循环时跟本次循环相等

        End If

    Next i

   

    For i = 1 To 10

        Print a(i);

    Next i

    Print

End Sub

 

【实例4.29  AB均为N×N矩阵,求矩阵C=A+B

矩阵的加法运算规则是:两个大小一样的矩阵,相同位置元素之和为结果矩阵中的对应位置的元素。如:

已知矩阵AB,则C矩阵的运算过程代码如下:

Const N = 4

Dim A(N, N) As Integer

Dim B(N, N) As Integer

Dim C(N, N) As Integer

 

Private Sub GetC_Click()

    Dim i As Integer, j As Integer

    Print "C=A+B"

    For i = 1 To N

        For j = 1 To N

            C(i, j) = A(i, j) + B(i, j)

            Print C(i, j);

        Next j

        Print

    Next i

End Sub

程序运行结果如图4-39所示。

4-39  程序运行界面

4.5  综合应用举例

【实例4.30  输入一串字符,统计各字母出现的次数,不区分大小写。

统计26个英文字母出现的次数,必须声明一个具有26个元素的数组,每个数组元素的下标表示对应的字母。从输入的字符串中逐一取出字符,并将其转换成大写字母,再进行判断。

程序界面及运行结果如图4-40所示。打开代码编辑窗口,在其中输入如下代码:

4-40  程序运行结果

Private Sub Command1_Click()

    Dim a(1 To 26) As Integer

    Dim i As Integer, j As Integer, c As String * 1, tot As Integer

    tot = Len(Text1)

    For i = 1 To tot

        c = UCase(Mid(Text1, i, 1))

        If c >= "A" And c <= "Z" Then

            j = Asc(c) - 65 + 1

            a(j) = a(j) + 1

        End If

    Next i

    For j = 1 To 26

        If a(j) > 0 Then

            Label2.Caption = Label2.Caption & Chr(j + 64) & "=" & a(j) & " "

        End If

    Next j

End Sub

 

【实例4.31  设有一个5×5的方阵,其中元素是由计算机随机生成的小于100的整数,求:

1)对角线上元素只和。

2)对角线上元素之积。

3)方阵中最大的元素。

方阵中的元素可以用一个二维数组来表示。利用单层循环可以计算出对角线上元素的和、积,方阵中的最大元素则需要利用双层的循环计算。

程序界面如图4-41所示,程序运行后单击【计算】按钮的结果如图4-42所示。

   

4-41  程序界面                        4-42  程序运行结果

打开代码编辑窗口,在其中输入如下代码:

Private Sub Form_Load()

    List1.Clear

    Dim p As String

    Randomize

    For i = 1 To 5

        p = ""

        For j = 1 To 5

            a(i, j) = Int(Rnd * 99) + 1

            p = p & Format(a(i, j), "!@@@")

        Next


字数:10248    最后更新:1年以前 [09-06 01:38]我爱钱 修改
本页编辑者:我爱钱  
[前一页]:第四章  [后一页]:第四章
[在本页中加入书签] [收藏本书] [推荐本书]
  17xie论坛 > 本书讨论区 > 本页评论   (共0条)
发表评论

用户名称 匿名发表
评论内容
验证码

关于我们 | 版权声明 | 免责声明 | 诚聘英才 | 联系我们 | 合作伙伴 | 友情链接 | 广告合作 | 提交意见
Copyright © 2007 17xie.com 互联网协同写书平台 京ICP备08002671号