Mid函数的问题~~

CrazyDogHH3 2004-09-09 07:45:00
有一个比较初级的问题:

求一个车牌号,条件是:1)前两位数字相同;2)后两位数字相同;3)该4位车牌号恰是一个整数的平方

小弟我写了这样一段代码:

Private Sub Form_Click()
Dim a(1 To 4) As Integer
Dim i As Integer
Dim x As String
For i = 32 To 99
x = Str(i ^ 2)
a(1) = Val(Mid(x, 2, 1))
a(2) = Val(Mid(x, 3, 1))
a(3) = Val(Mid(x, 4, 1))
a(4) = Val(Mid(x, 5, 1))
If a(1) = a(2) And a(3) = a(4) Then
Exit For
End If
Next i
Form1.Print "车牌号是:" & x
End Sub

可是这里为什么要是
a(1) = Val(Mid(x, 2, 1))
a(2) = Val(Mid(x, 3, 1))
a(3) = Val(Mid(x, 4, 1))
a(4) = Val(Mid(x, 5, 1))
才可以正确显示,如果改成:
a(1) = Val(Mid(x, 1, 1))
a(2) = Val(Mid(x, 2, 1))
a(3) = Val(Mid(x, 3, 1))
a(4) = Val(Mid(x, 4, 1))
就得不到正确的结果了?我试着看了一下,如果用下面的这段代码,那么得到的结果变成了9801(99的平方),a(1)=0,a(2)=9,a(3)=8,a(4)=0,请问这是为什么?~~
...全文
300 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
CrazyDogHH3 2004-09-10
  • 打赏
  • 举报
回复
谢谢各位了~
northwolves 2004-09-09
  • 打赏
  • 举报
回复
str() 前有一个符号位。

可以这样:
Private Sub Form_Click()
Dim a(1 To 4) As String
Dim i As Integer, x As String
For i = 32 To 99
x = i ^ 2
a(1) = Mid(x, 1, 1)
a(2) = Mid(x, 2, 1)
a(3) = Mid(x, 3, 1)
a(4) = Mid(x, 4, 1)
If a(1) = a(2) And a(3) = a(4) Then Exit For
Next i
MsgBox "车牌号是:" & x
End Sub


也可以这样:
Private Sub Form_Click()
Dim i As Integer, j As Integer, s As Integer
For i = 1 To 9
For j = 1 To 9
s = Val(i & i & j & j)
If Int(Sqr(s)) = Sqr(s) Then MsgBox "车牌号是:" & s
Next
Next
End Sub
rainstormmaster 2004-09-09
  • 打赏
  • 举报
回复
或者你用cstr代替str
Andy__Huang 2004-09-09
  • 打赏
  • 举报
回复
與a(0)有關係嗎?
TechnoFantasy 2004-09-09
  • 打赏
  • 举报
回复
上面是帮助中关于Str函数的Remarks,意思就是说在转换数字到字符串时,转换后的字符串前面都会加一个符号位,如果是正数,那么前面的符号位将以空格来取代。
TechnoFantasy 2004-09-09
  • 打赏
  • 举报
回复
When numbers are converted to strings, a leading space is always reserved for the sign of number. If number is positive, the returned string contains a leading space and the plus sign is implied.
TechnoFantasy 2004-09-09
  • 打赏
  • 举报
回复
你的代码正确,结果是7744

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧