回 帖 发 新 帖 刷新版面

主题:大虾们帮我下

生成20个1到100之间的随机数,统计其中1位数、2位数和3位数的个数。


我编的是
Private Sub Command1_Click()
Dim a As Integer, i As Integer, c As Integer, d As Integer, e As Integer, f As Integer
Randomize
d = 0
e = 0
f = 0
For i = 1 To 20
    a = Int(100 * Rnd) + 1
    List1.AddItem a
    c = Len(a)
    If c = 1 Then
        d = d + 1
    ElseIf c = 2 Then
        e = e + 1
    Else
        f = f + 1
    End If
Text1.Text = d
Text2.Text = e
Text3.Text = f
Next i
End Sub

Private Sub Command2_Click()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
List1.Clear
End Sub

Private Sub Command3_Click()
Unload Me
End Sub

可是不知道是哪错了。。。。。

回复列表 (共4个回复)

沙发

可能是Len(a)这里错了吧
应该是Len(LTrim(str(a)))
不过这类题悄建议用字符串处理的方法.应该从数的大小上考虑.

板凳

Len()是字符串函数.
CStr(a)可将a 转换成字符串.
第10行改成 Len(CStr(a))即可解决.

3 楼

这好像能通过概率解决问题,既然是随机的,那么生成1位数,2位数,3位数的概率分别是多少呢?呵呵。不过我不知道。

4 楼

同意1楼的意见。

修改如下:
Private Sub Command1_Click()
Dim 随机数 As Integer, i As Integer, 一位 As Integer, 二位 As Integer, 三位 As Integer
Randomize
For i = 1 To 20
    随机数 = Int(100 * Rnd) + 1
    List1.AddItem 随机数
    If 随机数 > 10 Then
        一位=一位+ 1
    ElseIf 随机数 = 100 Then
        三位=三位+1
    Else
        二位 = 二位 + 1
    End If
Text1.Text = 一位
Text2.Text = 二位
Text3.Text = 三位
Next i
End Sub

Private Sub Command2_Click()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
List1.Clear
End Sub

Private Sub Command3_Click()
Unload Me
End Sub

我来回复

您尚未登录,请登录后再回复。点此登录或注册