VB 数组中去掉相同的数

具体情况是一个数组c()吧,里面的数有20-30个左右,具体多少个具体等前面的程序算过才会得出.现在要做的就是里面的数中会有相同的,需要把相同的去掉,只留下一个.然后还要... 具体情况是一个数组c()吧,里面的数有20-30个左右,具体多少个具体等前面的程序算过才会得出.
现在要做的就是里面的数中会有相同的,需要把相同的去掉,只留下一个.然后还要给出最后剩下的数的个数.
不明白的请留言.以前老师教VC的时候教过,可是我学习不专心,几年了,现在不记得怎么弄了,懒得找书了.知道的教一下.
展开
 我来答
xiangjuan314
2016-03-09 · TA获得超过3.3万个赞
知道大有可为答主
回答量:2.9万
采纳率:0%
帮助的人:2848万
展开全部

具体思路:

实现2次循环,一个数组循环2次,外循环数组,得出一个值a,然后内循环,将a与自身所在的数组的值对比一次,计算出现次数或者设置为空,如果计算出现次数可以计算次数大于2时候,进行删除操作。如果设置为空,等于进行删除操作。

具体代码如下:

Option Explicit  

Function Delete3(Arr As Variant) As Variant  

    Dim i As Integer  

    For i = LBound(Arr) To UBound(Arr)  

        If i > UBound(Arr) Then Exit For  //累计器大于数组长度,退出循环

        If Arr(i) = 3 Then  

            Do  

                Dim j As Integer  

                For j = i To UBound(Arr) - 1   //数组从新赋值

                    Arr(j) = Arr(j + 1)  

                Next j  

                If LBound(Arr) = UBound(Arr) Then  

                    Delete3 = Empty  //删除相同元素

                    Exit Function  

                End If  

                ReDim Preserve Arr(LBound(Arr) To UBound(Arr) - 1)  

                //从新定义数组长度

                If i > UBound(Arr) Then Exit For  //累计器大于数组长度,退出循环

            Loop While Arr(i) = 3  

        End If  

    Next i  

    Delete3 = Arr  

End Function  

Sub Test()  

    Delete3 (Array(3, 3, 3, 3, 1, 3, 7, 3, 3, 3, 9, 3, 3))  

End Sub  

测试结果:验证方式通过计算删除元素后的数组长度确认实现功能,输入了Array(3, 3, 3, 3, 1, 3, 7, 3, 3, 3, 9, 3, 3),长度为13(从1开始算),删除后长度为3,而且只有3个元素是不重复的。说明功能正常。

玫瑰为你盛开
推荐于2018-03-14 · TA获得超过8518个赞
知道大有可为答主
回答量:820
采纳率:0%
帮助的人:0
展开全部
Private Sub Command1_Click()
Dim cflag() As Boolean, c() As Integer

Rem 在此处得到C的具体元素及其个数,以下为示例
'**********************************
m = 20
ReDim cflag(1 To m), c(1 To m)
a = LBound(c)
b = UBound(c)

Randomize
Text1 = ""
Text2 = ""
For i = a To b
c(i) = Int(10 * Rnd)
Text1 = Text1 & " " & c(i)
Next
'***********************************

Rem 去同
For i = a To b - 1
If cflag(i) = False Then
For j = i + 1 To b
If c(i) = c(j) Then cflag(j) = True
Next
End If
Next

Rem 显示
n = 0
For i = a To b
If cflag(i) = False Then
n = n + 1
Text2 = Text2 & " " & c(i)
End If
Next

Print n '剩余个数

End Sub
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cwa9958
2009-06-11 · TA获得超过1884个赞
知道大有可为答主
回答量:2504
采纳率:0%
帮助的人:2005万
展开全部
懒得找书了

0分,我也懒的写了,虽然很简单
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式