
我这个Vb代码哪里错了?查找3,4,5位数的Armstrong数。
PrivateSubCommand1_Click()DimNAsIntegerDimiAsLong,aAsLong,bAsLongText1.Text=""SelectC...
Private Sub Command1_Click()
Dim N As Integer
Dim i As Long, a As Long, b As Long
Text1.Text = " "
Select Case Combo1.Text
Case "三位数"
N = 3
Case "四位数"
N = 4
Case "五位数"
N = 5
End Select
a = 10 ^ (N - 1)
b = 10 ^ N - 1
For i = a To b
If Armstrong(i) = True Then
Text1.Text = Text1.Text & i & " "
End If
Next i
End Sub
Private Function Armstrong(ByVal m As Long) As Boolean
Dim i As Integer, N As Integer, sum As Long
N = Len(m)
For i = 1 To N
sum = sum + Val(Mid(CStr(m), i, 1)) ^ N
Next i
If sum = m Then
Armstrong = True
Else
Armstrong = False
End If
End Function 展开
Dim N As Integer
Dim i As Long, a As Long, b As Long
Text1.Text = " "
Select Case Combo1.Text
Case "三位数"
N = 3
Case "四位数"
N = 4
Case "五位数"
N = 5
End Select
a = 10 ^ (N - 1)
b = 10 ^ N - 1
For i = a To b
If Armstrong(i) = True Then
Text1.Text = Text1.Text & i & " "
End If
Next i
End Sub
Private Function Armstrong(ByVal m As Long) As Boolean
Dim i As Integer, N As Integer, sum As Long
N = Len(m)
For i = 1 To N
sum = sum + Val(Mid(CStr(m), i, 1)) ^ N
Next i
If sum = m Then
Armstrong = True
Else
Armstrong = False
End If
End Function 展开
1个回答
展开全部
N = Len(m)
改为
N = Len(CStr(m))
否则N的值将永远等于4(因为长整型数占用4个字节的内存)
改为
N = Len(CStr(m))
否则N的值将永远等于4(因为长整型数占用4个字节的内存)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询