我这个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
展开
 我来答
网海1书生
科技发烧友

2014-05-15 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26234

向TA提问 私信TA
展开全部
N = Len(m)

改为
N = Len(CStr(m))

否则N的值将永远等于4(因为长整型数占用4个字节的内存)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式