vb改错大题

所谓完全数是指一个整数N的因子和(不包括N)等于自身。例如,6=1+2+3,6是完全数。编写程序验证:两位以上的完全数,把它们的各位数字加起来得到一个数,再把这个数的各位... 所谓完全数是指一个整数 N的因子和(不包括N)等于自身。例如,6=1+2+3,6是完全数。编写程序验证:两位以上的完全数,把它们的各位数字加起来得到一个数,再把这个数的各位数字加起来又得到一个数 ,一直做下去,直到得到一个一位数,这个数是1。过程WanShu的功能是找完全数(图1为程序正确执行时的画面)。

图1
含有错误的源程序如下:
Option Explicit
Private Sub Command1_Click()
Dim i As Integer, k As Integer, st As String
For i = 10 To 500
If wanshu(i) Then
st = CStr(i)
Text1.Text = Text1.Text & st
Call test(st)
Text1.Text = Text1.Text & Chr(13) & Chr(10)
End If
Next i
End Sub
Private Function wanshu(n As Integer) As Boolean
Dim i As Integer, sum As Integer
For i = 2 To n - 1
If n Mod i = 0 Then
sum = sum + i
End If
Next i
If sum = n Then wanshu = True
End Function
Private Sub test(s As String)
Dim i As Integer, sum As Integer
sum = 0
Do While Len(s) > 1
For i = 1 To Len(s)
sum = sum + Val(mid(s, i, 1))
Next i
Text1.Text = Text1.Text & "->" & Str(sum)
s = Str(sum)
Loop
End Sub
展开
 我来答
听不清啊
高粉答主

2015-06-15 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部

Option Explicit
Private Sub Command1_Click()
    Dim i As Integer, k As Integer, st As String
    For i = 10 To 500
        If wanshu(i) Then
            st = CStr(i)
            Text1.Text = Text1.Text & st
            Call test(st)
            Text1.Text = Text1.Text & Chr(13) & Chr(10)
        End If
    Next i
End Sub
Private Function wanshu(n As Integer) As Boolean
    Dim i As Integer, sum As Integer
    sum = 1
    wanshu = False
    For i = 2 To n - 1
        If n Mod i = 0 Then
            sum = sum + i
        End If
    Next i
    If sum = n Then wanshu = True
End Function
Private Sub test(s As String)
    Dim i As Integer, sum As Integer
    Do While Len(s) > 1
        sum = 0
        For i = 1 To Len(s)
            sum = sum + Val(Mid(s, i, 1))
        Next i
        Text1.Text = Text1.Text & "->" & Str(sum)
        s = CStr(sum)
    Loop
End Sub

卿祎宁LU
2015-06-15 · TA获得超过647个赞
知道小有建树答主
回答量:481
采纳率:80%
帮助的人:288万
展开全部
Option Explicit
Private Sub Command1_Click()
Dim i As Integer, k As Integer, st As String
For i = 10 To 500
If wanshu(i) Then
st = CStr(i)
Text1.Text = Text1.Text & st
Call test(st)
Text1.Text = Text1.Text & Chr(13) & Chr(10)
End If
Next i
End Sub
Private Function wanshu(n As Integer) As Boolean
Dim i As Integer, sum As Integer
For i = 1 To n - 1 '检验完数应从1开始
If n Mod i = 0 Then
sum = sum + i
End If
Next i
If sum = n Then wanshu = True
End Function
Private Sub test(s As String)
Dim i As Integer, sum As Integer
Do While Len(s) > 1
sum = 0 '每次计算各位之和,应把累计数清零
For i = 1 To Len(s)
sum = sum + Val(Mid(s, i, 1))
Next i
Text1.Text = Text1.Text & "->" & Str(sum)
s = Trim(Str(sum)) ' Str函数在讲sum转换为字符串的时候,字符多加了一个" "导致Len(s)始终大于1,使用trim函数去掉多余的空格
Loop
End Sub

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
_qx18
2015-06-29 · 超过38用户采纳过TA的回答
知道小有建树答主
回答量:266
采纳率:0%
帮助的人:97.1万
展开全部
好简单啊
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式