VB找出10000以内的所有回文数仍是回文数,并以“11^2=121”的形式存放于列表框中

来源:百度知道 编辑:UC知道 时间:2024/06/28 00:38:29
算了几次老是溢出怎么回事,我的代码是:
Dim i As Integer, j As Integer, k As Long, s As String, t As String, a As Long, b As String
For i = 11 To 9999
For j = 1 To Len(i)
s = Mid(i, j, 1) & s
Next j
If i = Val(s) Then a = i * i
For k = 1 To Len(a)
t = Mid(a, k, 1) & t
Next k
If a = t Then b = i & "^" & 2 & "=" & a
List1.AddItem b

Next i

Private Sub Form_DblClick()
Dim i As long
For i = 11 To 9999
If i = Int(StrReverse(i)) Then
If (i*i) = Int(StrReverse(i*i)) Then
List1.AddItem i & "^2=" & i*i
End If
End If
Next i
End Sub
简单些。/。。。

错误的原因是:你定义I为Integer型,i*i也将为Integer型,当i*i数值过大超过Integer的范围32768,则将溢出,VB会自动以最匹配的形式存储运算数,并且以相同的形式存储计算结果,这是VB编译时要经常注意的小问题 。