查找三个字符,要得到它的下一个字符串....
例如: 有一串数字, 0,12,3,4,....9,A,B,C,D,....Z 按顺序排列...
结果为:23B 的下一个为:23C
009 的下一个为:00A
以上就是我遇到的题目:
其实具体的我都不是很明白,以上的题目,我理解为是输入一个变量三个字符串,然后在上面的查找,得到下一个字串......介是,前两位字串是来规则的,而最后一个字串是以上面的数字为规则,来得到下一个字符串所以我写的结果为:
13 个解决方案
#1
结上面的...
题目中还说到,要用VB来写,必须用到Function
Function temp(x as integer)
dim n1
n1=0,12,3,...9,a,b,c,...z
x=right(n,3)
n2=split(n1,",")
for i=0 to ubound(n,2)
if x=n2(i) then
x1=n2(i+1)
msgbox x1
end if
next
end Function
题目中还说到,要用VB来写,必须用到Function
Function temp(x as integer)
dim n1
n1=0,12,3,...9,a,b,c,...z
x=right(n,3)
n2=split(n1,",")
for i=0 to ubound(n,2)
if x=n2(i) then
x1=n2(i+1)
msgbox x1
end if
next
end Function
#2
</font><font size="6" color="#FF0000" face="黑体">题目说清楚一点呀</font>
#3
aa</font><font size="6" color="#FF0000" face="黑体">追辑令</font></td>
#4
这实际上是个36进制运算的问题。10个数字和26个字母组成36个符号,那么可以当做是36进制的数。实际运算当中你把36进制转换为10进制进行加法运算,然后再把10进制数字转换成36进制的符号。这要用到数组。
10进制转36进制可用循环除法取余来进行。
36进制转10进制用乘法和累加法来进行。
符号的定义可以采用数组,从数组检索符号或数值。
10进制转36进制可用循环除法取余来进行。
36进制转10进制用乘法和累加法来进行。
符号的定义可以采用数组,从数组检索符号或数值。
#5
不好意思,看不懂题目
#6
同意kitegirl(小仙妹)的说法
这实际上是个36进制运算的问题
逢36进1
这实际上是个36进制运算的问题
逢36进1
#7
不会那么的复杂吧
#8
其实很简单,你看我的程序:
Function temp(x as string)
X=RIGHT("000" & X,3)
dim n1 as string
n1="01234567890ABCD...Z"
IF InStr(1,N1,right(X,1))<36 THEN
Function =LEFT(X,2) & MID(N1,InStr(1,N1,right(X,1))+1,1)
ELSEIF InStr(1,N1,MID(X,2,1))<36 THEN
Function =LEFT(X,1) & MID(N1,InStr(1,N1,MID(X,2,1))+1,1) & "0"
ELSEIF InStr(1,N1,LEFT(X,1))<36 THEN
Function =MID(N1,InStr(1,N1,LEFT(X,1))+1,1) & "00"
ELSE
msgbox x & "IS THE LAST NUMBER!"
Function="ZZZ"
end if
end Function
Function temp(x as string)
X=RIGHT("000" & X,3)
dim n1 as string
n1="01234567890ABCD...Z"
IF InStr(1,N1,right(X,1))<36 THEN
Function =LEFT(X,2) & MID(N1,InStr(1,N1,right(X,1))+1,1)
ELSEIF InStr(1,N1,MID(X,2,1))<36 THEN
Function =LEFT(X,1) & MID(N1,InStr(1,N1,MID(X,2,1))+1,1) & "0"
ELSEIF InStr(1,N1,LEFT(X,1))<36 THEN
Function =MID(N1,InStr(1,N1,LEFT(X,1))+1,1) & "00"
ELSE
msgbox x & "IS THE LAST NUMBER!"
Function="ZZZ"
end if
end Function
#9
Function testsub(ByVal iii As Long) As String
Dim ss(35) As String
Dim i As Integer
Dim tmpi As Long
Dim buf As String
For i = 0 To 35
If i < 10 Then
ss(i) = CStr(i)
Else
ss(i) = Chr(i - 10 + Asc("A"))
End If
Next
buf = ""
tmpi = iii
Do Until tmpi < 36
iii = tmpi Mod 36
tmpi = tmpi \ 36
buf = buf + ss(iii)
Loop
buf = buf + ss(tmpi)
For i = Len(buf) To 1 Step -1
testsub = testsub + Mid(buf, i, 1)
Next i
End Function
随便写的,仅供参考啊
Dim ss(35) As String
Dim i As Integer
Dim tmpi As Long
Dim buf As String
For i = 0 To 35
If i < 10 Then
ss(i) = CStr(i)
Else
ss(i) = Chr(i - 10 + Asc("A"))
End If
Next
buf = ""
tmpi = iii
Do Until tmpi < 36
iii = tmpi Mod 36
tmpi = tmpi \ 36
buf = buf + ss(iii)
Loop
buf = buf + ss(tmpi)
For i = Len(buf) To 1 Step -1
testsub = testsub + Mid(buf, i, 1)
Next i
End Function
随便写的,仅供参考啊
#10
学习
#11
Private Function a(ByVal s As String) As String
If s = "" Then
a = "1"
ElseIf Right(s, 1) = "Z" Then
a = a(Left(s, Len(s) - 1)) & "0"
ElseIf Right(s, 1) = "9" Then
a = Left(s, Len(s) - 1) & "A"
Else
a = Left(s, Len(s) - 1) & Chr(Asc(Right(s, 1)) + 1)
End If
End Function
#12
如果入参最大为zzz,可以用楼上的。
若要灵活使用,必须写为36进制运算
若要灵活使用,必须写为36进制运算
#13
楼上,谁说入参只能是zzz,理论上你可以无限长,你可以用这个函数去试一下。看zzzzzzzz是否能得出正确的答案。
但楼上的楼上说的对,我的算法是建立在字符串是规则的条件之上的,也就是说给出的参数必须满足条件,即要么数字,要么大写字符,我认为这个并不重要,我只是给出算发而已,是否满足条件,不属于该算法范畴,可以在算法以外判断,而实际上从这个算法的角度来说,是不应该在函数内部判断是否有效的,而应该在函数之外判断,否则会重复判断。
但楼上的楼上说的对,我的算法是建立在字符串是规则的条件之上的,也就是说给出的参数必须满足条件,即要么数字,要么大写字符,我认为这个并不重要,我只是给出算发而已,是否满足条件,不属于该算法范畴,可以在算法以外判断,而实际上从这个算法的角度来说,是不应该在函数内部判断是否有效的,而应该在函数之外判断,否则会重复判断。
#1
结上面的...
题目中还说到,要用VB来写,必须用到Function
Function temp(x as integer)
dim n1
n1=0,12,3,...9,a,b,c,...z
x=right(n,3)
n2=split(n1,",")
for i=0 to ubound(n,2)
if x=n2(i) then
x1=n2(i+1)
msgbox x1
end if
next
end Function
题目中还说到,要用VB来写,必须用到Function
Function temp(x as integer)
dim n1
n1=0,12,3,...9,a,b,c,...z
x=right(n,3)
n2=split(n1,",")
for i=0 to ubound(n,2)
if x=n2(i) then
x1=n2(i+1)
msgbox x1
end if
next
end Function
#2
</font><font size="6" color="#FF0000" face="黑体">题目说清楚一点呀</font>
#3
aa</font><font size="6" color="#FF0000" face="黑体">追辑令</font></td>
#4
这实际上是个36进制运算的问题。10个数字和26个字母组成36个符号,那么可以当做是36进制的数。实际运算当中你把36进制转换为10进制进行加法运算,然后再把10进制数字转换成36进制的符号。这要用到数组。
10进制转36进制可用循环除法取余来进行。
36进制转10进制用乘法和累加法来进行。
符号的定义可以采用数组,从数组检索符号或数值。
10进制转36进制可用循环除法取余来进行。
36进制转10进制用乘法和累加法来进行。
符号的定义可以采用数组,从数组检索符号或数值。
#5
不好意思,看不懂题目
#6
同意kitegirl(小仙妹)的说法
这实际上是个36进制运算的问题
逢36进1
这实际上是个36进制运算的问题
逢36进1
#7
不会那么的复杂吧
#8
其实很简单,你看我的程序:
Function temp(x as string)
X=RIGHT("000" & X,3)
dim n1 as string
n1="01234567890ABCD...Z"
IF InStr(1,N1,right(X,1))<36 THEN
Function =LEFT(X,2) & MID(N1,InStr(1,N1,right(X,1))+1,1)
ELSEIF InStr(1,N1,MID(X,2,1))<36 THEN
Function =LEFT(X,1) & MID(N1,InStr(1,N1,MID(X,2,1))+1,1) & "0"
ELSEIF InStr(1,N1,LEFT(X,1))<36 THEN
Function =MID(N1,InStr(1,N1,LEFT(X,1))+1,1) & "00"
ELSE
msgbox x & "IS THE LAST NUMBER!"
Function="ZZZ"
end if
end Function
Function temp(x as string)
X=RIGHT("000" & X,3)
dim n1 as string
n1="01234567890ABCD...Z"
IF InStr(1,N1,right(X,1))<36 THEN
Function =LEFT(X,2) & MID(N1,InStr(1,N1,right(X,1))+1,1)
ELSEIF InStr(1,N1,MID(X,2,1))<36 THEN
Function =LEFT(X,1) & MID(N1,InStr(1,N1,MID(X,2,1))+1,1) & "0"
ELSEIF InStr(1,N1,LEFT(X,1))<36 THEN
Function =MID(N1,InStr(1,N1,LEFT(X,1))+1,1) & "00"
ELSE
msgbox x & "IS THE LAST NUMBER!"
Function="ZZZ"
end if
end Function
#9
Function testsub(ByVal iii As Long) As String
Dim ss(35) As String
Dim i As Integer
Dim tmpi As Long
Dim buf As String
For i = 0 To 35
If i < 10 Then
ss(i) = CStr(i)
Else
ss(i) = Chr(i - 10 + Asc("A"))
End If
Next
buf = ""
tmpi = iii
Do Until tmpi < 36
iii = tmpi Mod 36
tmpi = tmpi \ 36
buf = buf + ss(iii)
Loop
buf = buf + ss(tmpi)
For i = Len(buf) To 1 Step -1
testsub = testsub + Mid(buf, i, 1)
Next i
End Function
随便写的,仅供参考啊
Dim ss(35) As String
Dim i As Integer
Dim tmpi As Long
Dim buf As String
For i = 0 To 35
If i < 10 Then
ss(i) = CStr(i)
Else
ss(i) = Chr(i - 10 + Asc("A"))
End If
Next
buf = ""
tmpi = iii
Do Until tmpi < 36
iii = tmpi Mod 36
tmpi = tmpi \ 36
buf = buf + ss(iii)
Loop
buf = buf + ss(tmpi)
For i = Len(buf) To 1 Step -1
testsub = testsub + Mid(buf, i, 1)
Next i
End Function
随便写的,仅供参考啊
#10
学习
#11
Private Function a(ByVal s As String) As String
If s = "" Then
a = "1"
ElseIf Right(s, 1) = "Z" Then
a = a(Left(s, Len(s) - 1)) & "0"
ElseIf Right(s, 1) = "9" Then
a = Left(s, Len(s) - 1) & "A"
Else
a = Left(s, Len(s) - 1) & Chr(Asc(Right(s, 1)) + 1)
End If
End Function
#12
如果入参最大为zzz,可以用楼上的。
若要灵活使用,必须写为36进制运算
若要灵活使用,必须写为36进制运算
#13
楼上,谁说入参只能是zzz,理论上你可以无限长,你可以用这个函数去试一下。看zzzzzzzz是否能得出正确的答案。
但楼上的楼上说的对,我的算法是建立在字符串是规则的条件之上的,也就是说给出的参数必须满足条件,即要么数字,要么大写字符,我认为这个并不重要,我只是给出算发而已,是否满足条件,不属于该算法范畴,可以在算法以外判断,而实际上从这个算法的角度来说,是不应该在函数内部判断是否有效的,而应该在函数之外判断,否则会重复判断。
但楼上的楼上说的对,我的算法是建立在字符串是规则的条件之上的,也就是说给出的参数必须满足条件,即要么数字,要么大写字符,我认为这个并不重要,我只是给出算发而已,是否满足条件,不属于该算法范畴,可以在算法以外判断,而实际上从这个算法的角度来说,是不应该在函数内部判断是否有效的,而应该在函数之外判断,否则会重复判断。