回 帖 发 新 帖 刷新版面

主题:vb菜鸟求教.~~~高人指点一下.~

题目:要随机生成1个大于100小于1000的数字出来.把这些数字当作人民币. 
然后要把他分开.多少个100元.50元.20元.10元...... 

已经做到这样楽..请指教一下.~~ 

Private Sub Command1_Click() 
Cls 
s = Int((Rnd * 400 + 100) * 100) / 100 
Text1.Text = s 

Dim x(13) As Integer 
x(1) = 10000 
x(2) = 5000 
x(3) = 2000 
x(4) = 1000 
x(5) = 500 
x(6) = 200 
x(7) = 100 
x(8) = 50 
x(9) = 20 
x(10) = 10 
x(11) = 5 
x(12) = 2 
x(13) = 1 

i = 1 
s = s * 100 
k = s \ x(i) 
Do While i <= 13 
List1.AddItem Str(x(i) / 100 & "元" & Str(k) & "张") 
s = s - k * x(i) 
i = i + 1 
If i >= 14 Then 
Exit Do 
End If 
k = s \ x(i) 
Loop 
End Sub

回复列表 (共4个回复)

沙发

List1.AddItem Str(x(i) / 100 & "元" & Str(k) & "张") 


硪做到这里就侑问题楽..

板凳

Dim s As String

s = Text1.Text

If Len(s) > 2 Then
    List1.AddItem Left(s, Len(s) - 2) + "张100元"
    s = Right(s, 2)
End If
If s >= 50 Then
    List1.AddItem "1张50元"
    s = s - 50
End If
If s >= 10 Then
    List1.AddItem s \ 10 & "张10元"
    s = s - (s \ 10) * 10
End If
If s \ 5 > 0 Then
    List1.AddItem s \ 5 & "张5元"
    s = s - (s \ 5) * 5
End If
If s \ 2 > 0 Then
    List1.AddItem s \ 2 & "张2元"
    s = s - (s \ 2) * 2
End If
If s > 0 Then
    List1.AddItem "1张1元"
End If

以上方法可用循环做

3 楼

问题:类型不匹配。出现在
   List1.AddItem Str(x(i) / 100 & "元" & Str(k) & "张")
语句中。因为
   x(i) / 100 & "元" & Str(k) & "张"
本身就是字符串,不能作为str函数的参数。可以改为:
   List1.AddItem x(i) / 100 & "元" & Str(k) & "张"

一切搞定。

4 楼

另外,
i = 1 
s = s * 100 
k = s \ x(i) 
Do While i <= 13 
List1.AddItem x(i) / 100 & "元" & Str(k) & "张"
s = s - k * x(i) 
i = i + 1 
If i >= 14 Then 
Exit Do 
End If 
k = s \ x(i) 
Loop 
这段循环可以简化。

1、又可以确定循环次数的,尽量使用for……next,而不使用do
2、语句重复。
3、循环条件与循环中跳出重复。

可以改为:
for i = 1 to 13
s = s * 100 
k = s \ x(i) 
List1.AddItem x(i) / 100 & "元" & Str(k) & "张"
s = s - k * x(i) 
next i

我来回复

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