如dd=345
cc=5678
求f=? f=(dd当中有几个和cc重复的)
如上例f=1,因为就有1个5重复
又如dd=555
cc=5678
那么f应该等于3,3个5重复了
能否写成类似于这样的 ,下面代码是重复数字的和
Function fr(ByVal v As Long) As Long
Dim l As Long
While v > 0
l = v Mod 10
v = v \ 10
Select Case l
Case 1, 4, 7,0,8
fr = fr + l
End Select
Wend
End Function
如现在是h=578,等于上面问题的dd
然后,我在其他地方调用的时候可以直接用f=fr(h),这个f就是重复次数,这个比较会用很多次的,总不能用一次写一次啊,那样太麻烦,所以还是单独写一个像上面那个重复数字和的那样通用的比较好,然后在其他地方直接调用就可以了
Private Sub Command1_Click()
a = 345
b = 55678
For i = 1 To 3
For j = 1 To 4
If Mid(a, i, 1) = Mid(b, j, 1) Then x = x + 1
Next j
Next i
Print x
End Sub
这个不是我要的,我要的是通用的,将来可以f=fr(s)或f=fr(d),这样每次变换括号里的变量就可以了,这个该怎么写
cc=5678
求f=? f=(dd当中有几个和cc重复的)
如上例f=1,因为就有1个5重复
又如dd=555
cc=5678
那么f应该等于3,3个5重复了
能否写成类似于这样的 ,下面代码是重复数字的和
Function fr(ByVal v As Long) As Long
Dim l As Long
While v > 0
l = v Mod 10
v = v \ 10
Select Case l
Case 1, 4, 7,0,8
fr = fr + l
End Select
Wend
End Function
如现在是h=578,等于上面问题的dd
然后,我在其他地方调用的时候可以直接用f=fr(h),这个f就是重复次数,这个比较会用很多次的,总不能用一次写一次啊,那样太麻烦,所以还是单独写一个像上面那个重复数字和的那样通用的比较好,然后在其他地方直接调用就可以了
Private Sub Command1_Click()
a = 345
b = 55678
For i = 1 To 3
For j = 1 To 4
If Mid(a, i, 1) = Mid(b, j, 1) Then x = x + 1
Next j
Next i
Print x
End Sub
这个不是我要的,我要的是通用的,将来可以f=fr(s)或f=fr(d),这样每次变换括号里的变量就可以了,这个该怎么写
解决方案 »
- 关于改变窗口大小的问题
- VB中点击 鼠标右键 然后获得鼠标 在窗体上的位置的函数是什么?
- To off123: recordset.update问题,请帮忙看一下
- 用DataReport显示 分组 报表的 问题?
- ACCESS的UPDATE问题
- 如何在打开exe文件的时候,先运行批处理的bat文件,然后再运行exe的内容!
- 心情不好! 散分了!!!来者有分!!快来吧!!
- 一个奇怪的问题?
- 可以使用VB做后台连点器吗??知道相关技术的请进
- OptionButton的value=true时,能否让它的click事件不被触发。
- 如何知道ADO记录集的当前行是第几行
- rs.CursorLocation = adUseClient 这句什么时候用加啊? 我以前都没加过,一直用的挺好,今天写了个SQL语句却不行了
Dim dd As Long
Call aa(345, 55667, dd)
MsgBox dd
End SubPrivate Function aa(ByVal ax As Long, ByVal ab As Long, x As Long)
For i = 1 To Len(ax)
For j = 1 To Len(ab)
If Mid(ax, i, 1) = Mid(ab, j, 1) Then x = x + 1
Next j
Next i
End Function
Private Function Occurence_Count(ByVal intSource As Long, ByVal intPattern As Long) As Long
Dim strSource As String, strPattern As String
Dim n As Integer, i As Integer, j As IntegerstrSource = CStr(intSource)
strPattern = CStr(intPattern)For i = 1 To Len(strPattern)
For j = 1 To Len(strSource)
If Mid(strPattern, i, 1) = Mid(strSource, j, 1) Then n = n + 1
Next j
Next iOccurence_Count = nEnd FunctionPrivate Sub Command1_Click()
Dim a As Long, b As Long
a = 345
b = 556748Debug.Print Occurence_Count(b, a)
End Sub
假设dd=12333 cc=33456,算重复了几个数字?
3个还是6个还是5个?
Private Sub Command1_Click()
Print Fun1(12333, 3345)
Print Fun2(12333, 3345)
Print Fun3(12333, 3345)
End SubPrivate Function Fun1(ByVal dd As Long, cc As Long) As Long
Dim n As Long, m As Long, i As Long
Dim numdd(0 To 9) As Long, numcc(0 To 9) As Long
Do While dd > 0
m = dd Mod 10
numdd(m) = numdd(m) + 1
dd = dd \ 10
Loop
Do While cc > 0
m = cc Mod 10
numcc(m) = numcc(m) + 1
cc = cc \ 10
Loop
For i = 0 To 9
If numcc(i) > 0 Then
n = n + numdd(i)
End If
Next
Fun1 = n
End FunctionPrivate Function Fun2(ByVal dd As Long, cc As Long) As Long
Dim n As Long, m As Long, i As Long
Dim numdd(0 To 9) As Long, numcc(0 To 9) As Long
Do While dd > 0
m = dd Mod 10
numdd(m) = numdd(m) + 1
dd = dd \ 10
Loop
Do While cc > 0
m = cc Mod 10
n = n + numdd(m)
cc = cc \ 10
Loop
Fun2 = n
End Function
Private Function Fun3(ByVal dd As Long, cc As Long) As Long
Dim n As Long, m As Long, i As Long
Dim numdd(0 To 9) As Long, numcc(0 To 9) As Long
Do While dd > 0
m = dd Mod 10
numdd(m) = numdd(m) + 1
dd = dd \ 10
Loop
Do While cc > 0
m = cc Mod 10
numcc(m) = numcc(m) + 1
cc = cc \ 10
Loop
For i = 0 To 9
If numcc(i) > 0 And numdd(i) > 0 Then
n = n + numdd(i) + numcc(i)
End If
Next
Fun3 = n
End Function