请教一下,输出3个数的最大数和最小数,为何有时不能正常输出,请指教,谢谢
代码如下:
Private Sub Form_Activate()
Dim a, b, c, t As Integer
a = InputBox("请输入第一个数", "")
b = InputBox("请输入第二个数", "")
c = InputBox("请输入第三个数", "")
If a < b Then
t = a
a = b
b = t
End If
If a < c Then
t = a
a = c
c = t
End If
If c < b Then
Form1.Print "最大的数是"; a; "最小的数是"; c;
End If
If c > b Then
Form1.Print "最大的数是"; a; "最小的数是"; b;
End If
End Sub
问题点数:0、回复次数:11Top
1 楼greenberet007(阿宁)回复于 2005-02-03 23:33:26 得分 0
我用另一个方法写的代码还是不行,请指教,谢谢
Private Sub Form_Activate()
Dim a, b, c, t As Integer
a = InputBox("请输入第一个数", "")
b = InputBox("请输入第二个数", "")
c = InputBox("请输入第三个数", "")
If a < b Then
t = a
a = b
b = t
End If
If a < c Then
t = a
a = c
c = t
End If
If c > b Then
t = b
b = c
c = t
End If
Form1.Print "最大的数是"; a; "最小的数是"; c;
End Sub
Top
2 楼greenberet007(阿宁)回复于 2005-02-03 23:36:39 得分 0
输入的数字顺序为2,1,3;2,3,1时输出的为3,2
而其他的输入1,2,3;1,3,2;3,1,2;3,2,1都是正常的输出3,1
Top
3 楼bailerong(吉祥龙)回复于 2005-02-03 23:52:47 得分 0
dim x,y,z
input x
input y
input z
if x>y then
a=x
x=y
y=a
endif
if y>z then
a=y
y=z
z=a
endif
print "最小数为:",x
print "最大数为:",z
Top
4 楼bailerong(吉祥龙)回复于 2005-02-03 23:55:23 得分 0
哦~!还查一个IF!
if x>a then .....Top
5 楼bailerong(吉祥龙)回复于 2005-02-03 23:56:01 得分 0
哦~!错了!是...
if x>zTop
6 楼maomao9876(水晶宫毛毛)回复于 2005-02-04 07:33:37 得分 0
'楼主可能是想和大家开个玩笑,2怎么会小于1呢?
'
'================================================================================
' 以顺序输入2,1,3为例说明
'================================================================================
Private Sub Form_Activate()
Dim a, b, c, t As Integer
a = InputBox("请输入第一个数", "") 'a的值为"2"
b = InputBox("请输入第二个数", "") 'b的值为"1"
c = InputBox("请输入第三个数", "") 'c的值为"3"
If a < b Then '即 "2" < "1" = FAlSE,条件不成立
t = a
a = b
b = t
End If
If a < c Then '即 "2" < "3" = TRUE,条件成立
t = a 't 为整型,a 的值为"2",强制转换为整型赋值给t, t 的值为2
a = c 'a 的值为 "2", c的值为 "3",类型相同不做转换,赋值后 a、c的值都为 "3"
c = t '*******关键在这里,c 的值为 "3",t 的值 2 直接赋值给整型变量 c,c 的值为2
End If
'现在,a="3",b="1",c=2。说到这里,其实再往下解释就多余了^_^
If c < b Then ' 2<"1",条件成立,这里"1"被转换为ASC("1"),也就是49
Debug.Print "最大的数是a"; a; "最小的数是c"; c;
End If
If c > b Then '条件不成立
Debug.Print "最大的数是a"; a; "最小的数是b"; b;
End If
End SubTop
7 楼jadeluo(秀峰)回复于 2005-02-04 08:45:14 得分 0
还是写一个Max和一个Min函数能让程序更清晰:
Option Explicit
Private Function Max(ByVal a As Integer, ByVal b As Integer) As Integer
If a > b Then Max = a Else Max = b
End Function
Private Function Min(ByVal a As Integer, ByVal b As Integer) As Integer
If a < b Then Min = a Else Min = b
End Function
Private Sub Form_Load()
Dim a, b, c As Integer
a = InputBox("请输入第一个数", "")
b = InputBox("请输入第二个数", "")
c = InputBox("请输入第三个数", "")
Debug.Print "最小值="; Min(Min(a, b), c)
Debug.Print "最大值="; Max(Max(a, b), c)
End
End Sub
Top
8 楼greenberet007(阿宁)回复于 2005-02-04 09:54:46 得分 0
我现在就是搞不清楚,为什么我输入数字顺序为2,1,3;2,3,1时输出的为3,2
而其他的输入1,2,3;1,3,2;3,1,2;3,2,1都是正常的输出3,1
请高手指教,谢谢Top
9 楼greenberet007(阿宁)回复于 2005-02-04 10:21:17 得分 0
看来是字符串和数值之间的转换问题,我把代码修改了一下,经过测试,已经正确,谢谢各位高手指点。
Private Sub Form_Activate()
Dim a, b, c, t As Integer
aa = InputBox("请输入第一个数", "")
bb = InputBox("请输入第二个数", "")
cc = InputBox("请输入第三个数", "")
a = Val(aa)
b = Val(bb)
c = Val(cc)
If a < b Then
t = a
a = b
b = t
End If
If a < c Then
t = a
a = c
c = t
End If
Form1.Print "最大的数是"; a
If c > b Then
Form1.Print "最小的数是"; b
Else: Form1.Print "最小的数是"; c
End If
End Sub
Top
10 楼pikachu8guan(30度仰角 (www.vbgood.com 新手学堂 Manager))回复于 2005-02-04 10:28:51 得分 0
逻辑思路不对 这是比较典型的初学者的问题 你去google看看 有很多写的很完整的求最大数的函数
而且不限制数的多少 也就是可以求3个数的最大值 也可以求100个数的最大值 她们写的容错都很好 你可以参考下Top
11 楼greenberet007(阿宁)回复于 2005-02-04 10:42:44 得分 0
请你指出我的逻辑思路哪里不对,方便我改正,谢谢Top




