标题:用Dim声明数组a并用Array赋值,插入和删除元素
只看楼主
先锋Dan
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2020-5-16
结帖率:0
已结贴  问题点数:20 回复次数:2 
用Dim声明数组a并用Array赋值,插入和删除元素
循环嵌套和选择的结构搞不懂,麻烦大神看看我的代码哪里有错
用Dim声明数组a并用Array赋值(数组元素的个数及每个元素的值自己设定),从键盘上输入一个数据,在数组中进行查找:如果数组中有,则删除数组中的这个元素;如果没有则提示“还没有这个数。你想让它成为第几个数?”,用户输入该数需要插入的位置,并将该数插入到用户指定位置。
Option Base 1
Private Sub Form_Click()
    Dim a()              
    Dim i%, u%, n%, s%
    a = Array(1, 4, 7, 10, 133, 22, 15, 133, 16, 19, 133, 22, 25)  '输入一个数
    u = UBound(a)
    flag = 0
    n = Val(InputBox("请输入要插入的数据"))
    For i = LBound(a) To UBound(a)    '在源数据中查找
        If a(i) = n Then              'If 找到 Then
            flag = i: Exit For
    For i = flag To UBound(a)
        a(i - 1) = a(i)      '删除(后面元素前移)
    Next i
    u = u - 1         '数组元素个数 -1
    ReDim Preserve a(u)
    For i = 1 To u   'Else
        If n <> a(i) Then
            s = Val(InputBox("没有这个数,你想让它成为第几个数"))   '输入希望插入的位置
    Next i
    For i = UBound(a) To s Step -1
        u = u + 1   '数组元素个数 +1
        a(i + 1) = a(i) '后面元素后移
        Next i
        a(s) = n     '输入的数放入空位
    Next i
    For i = 1 To n
        Print a(i);              '输出完整数组
    Next i
End Sub
搜索更多相关主题的帖子: 元素 Dim 数组 插入 个数 
2020-05-16 14:11
HVB6
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:15
帖 子:320
专家分:561
注 册:2013-10-30
得分:10 
回复 楼主 先锋Dan
试试:
Option Base 1
Private Sub Form_Click()
    Dim a(), b()
    Dim i%, u%, n%, s%, j%, ss&
    a = Array(1, 4, 7, 10, 133, 22, 15, 133, 16, 19, 133, 22, 25)  '输入一个数
    u = UBound(a)
    flag = 0
    n = Val(InputBox("请输入要插入的数据"))
    For i = LBound(a) To UBound(a)    '在源数据中查找
        If a(i) = n Then flag = i: Exit For              'If 找到 Then
    Next i
      If flag <> 0 Then
        For i = flag To UBound(a) - 1
          a(i) = a(i + 1)    '删除(后面元素前移)
        Next i
            u = u - 1         '数组元素个数 -1
       Else
             u = u + 1
             j = u - 1
             ReDim Preserve a(u)
             s = Val(InputBox("没有这个数,你想让它成为第几个数" & "," & "现有数据" & u - 1 & "个" & "," & "最大的位数为" & u)) '输入希望插入的位置
         If s = u Then
           a(s) = n
         Else
          For i = j To s Step -1
             If s = i Then
               a(i) = n
               Exit For
             Else
              a(i + 1) = a(i) '后面元素后移
             End If
           Next i
       ' a(s) = n     '输入的数放入空位
        End If
       End If
   
    For i = 1 To u
        Print a(i);              '输出完整数组
    Next i
End Sub
2020-05-16 16:38
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:10 
    Dim a()
    Dim i%, u%, n%, s%
    Dim flag%           '这个变量未定义
    a = Array(1, 4, 7, 10, 133, 22, 15, 133, 16, 19, 133, 22, 25)  '输入一个数
    u = UBound(a)
   
    Cls                         '显示前清理一个显示区
    Print "原始数据:"
    For i = 1 To u
        Print a(i);              '输出完整数组
    Next i
    Print: Print                  '换一个空行
   
    flag = LBound(a) -1            '起始位置,要比数组下标要小
    n = Val(InputBox("请输入要删除或插入的数据"))
   
    For i = LBound(a) To u              '在源数据中查找,已有变量批示数组大小,没必要再使用一遍函数
        If a(i) = n Then              'If 找到 Then
            flag = i: Exit For
        End If      '判断结束后要关闭IF语句块
    Next i          '循环结束也要关闭循环块
   
    '你原来没有判断,怎么知道找到了没找到?
    If flag >= LBound(a) Then           'flag给了初值,如果找到就有值,否则就是 LBound(a) - 1
        For i = flag + 1 To UBound(a)       '找到的这个元素不要移动,否则就删掉了前面的数据了
            a(i - 1) = a(i)      '删除(后面元素前移)
        Next i
        u = u - 1         '数组元素个数 -1
        ReDim Preserve a(u)
    Else            '没有找到,转入插入新元素操作
        Do          '要求输入数值时,有可能输入有误,则需要使用循环来允许重复输入
            s = Val(InputBox("没有这个数,你想让它成为第几个数,范围:0 - " & u))     '输入希望插入的位置
            If s = -1 Then Exit Sub             '输入-1时结束执行,一般用于循环时不想继续的中止条例
            If s >= 0 And s <= u Then           '在允许范围内,结束循环
                Exit Do
            End If
        Loop
        '要先调整数组大小
        u = u + 1         '数组元素个数 +1,并且修改数组大小,不能放循环内
        ReDim Preserve a(u)
   
        For i = s To u - 1          '数组元素向后移一位
            a(i + 1) = a(i)
        Next i
        a(s) = n                    '输入的数放入空位
        
    End If

Print "修改后数据:"
    For i = 1 To u
        Print a(i);              '输出完整数组
    Next i


[此贴子已经被作者于2020-5-16 20:45编辑过]


授人于鱼,不如授人于渔
早已停用QQ了
2020-05-16 20:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-501637-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.159808 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved