vb任意输入3个整数,按照由小到大排序输出。

我编的很繁琐,而且错了,出不来,告诉我哪里错了并且给我一个简洁的编程吧
Private Sub Command1_Click()
Dim a As Single, b As Single, c As Single
a = Text1.Text
b = Text2.Text
c = Text3.Text
If a > b > c Then
Text1.Text = a
Text2.Text = b
Text3.Text = c
ElseIf a > c > b Then
Text1.Text = a
Text2.Text = c
Text3.Text = b
ElseIf b > a > c Then
Text1.Text = b
Text2.Text = a
Text3.Text = c
ElseIf b > c > a Then
Text1.Text = b
Text2.Text = c
Text3.Text = a
ElseIf c > a > b Then
Text1.Text = c
Text2.Text = a
Text3.Text = b
ElseIf c > b > a Then
Text1.Text = a
Text2.Text = b
Text3.Text = a
End If

用户的这一行 If a > b > c Then是错误的,任何一门语言都是按照运算符优先级从左至右依次计算得出结果的,显然两个>运算符优先级是相同的,所以从左至右依次算。

可以参考以下代码:

Dim a As Single, b As Single, c As Single

a = Text1.Text

b = Text2.Text

c = Text3.Text

'无外乎就六种情况

'a>b>c

'a>c>b

'b>a>c

'b>c>a

'c>a>b

'c>b>a

If a > b And b > c Then 'a比b大,且b比c大

Text1.Text = c

Text2.Text = b

Text3.Text = a

ElseIf a > c And c > b Then 'a比c大,且c比b大

Text1.Text = b

Text2.Text = c

Text3.Text = a

'下面可以参照以上函数

End If

扩展资料:

VB常用函数

1、Time 

返回系统时钟的当前时间

2、Date 

返回系统时钟的当前日期

3、Now 

返回代表当前日期和时间的编码值,该函数经常用作其它系统时钟函数的参数

4、Hour(Time) 

返回指定时间的小时部分(0到23)

5、Minute(Time) 

返回指定时间的分钟部分(0到59)

6、Second(Time) 

返回指定时间的秒部分(0到59)

7、Day(Date) 

返回月份中的日期数(1到31)

8、Month(Date) 

返回日期中的月份(1到12)

9、Year(Date) 

返回日期中的年度

10、Weekday(Date) 

返回日期中代表一周中的星期几

参考资料来源:百度百科-Visual Basic

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-10-20

解释一下为什么错了吧!

看这一行 If a > b > c Then。

任何一门语言都是按照运算符优先级从左至右依次计算得出结果的。

显然两个 > 运算符优先级是相同的,所以从左至右依次算。

先算 a > b,如果 a 真的比 b 大,那么得出结果 True;否则得出 False。

再算 True/False > c,一个是布尔值,一个是单精度浮点,当然不能比较。

就好像算 3 + 4 + 5,是先算 3 + 4 = 7,再算 7 + 5 = 12 一样,计算机很笨的,只能依次运算。

 

Dim a As Single, b As Single, c As Single
a = Text1.Text
b = Text2.Text
c = Text3.Text
 
'无外乎就六种情况
'a>b>c
'a>c>b
'b>a>c
'b>c>a
'c>a>b
'c>b>a
 
If a > b And b > c Then 'a比b大,且b比c大
   Text1.Text = c
   Text2.Text = b
   Text3.Text = a
ElseIf a > c And c > b Then 'a比c大,且c比b大
   Text1.Text = b
   Text2.Text = c
   Text3.Text = a
'下面类似,不写了
End If

 

P.S. 楼下的利用了中间变量 t,通过冒泡排序来进行的运算,也很简单。

第2个回答  2013-10-21

任何程序设计语言都没有类似 a > b > c 这样的表达式的,必须拆分为两部分: a > b And b > c


你的代码可以简化为:

Private Sub Command1_Click()
Dim a As Single, b As Single, c As Single, k As Single
a = Text1.Text
b = Text2.Text
c = Text3.Text
If a > b Then k = a: a = b: b = k
If b > c Then k = b: b = c: c = k
If a > b Then k = a: a = b: b = k
Text1.Text = a
Text2.Text = b
Text3.Text = c
End Sub

第3个回答  2013-10-21
方法1
Private Sub Command1_Click()
Dim N(2) As Long
Dim I As Long, J As Long, T As Long
N(0) = CLng(Text1.Text): N(1) = CLng(Text2.Text): N(2) = CLng(Text3.Text)
For I = 0 To 1
For J = I + 1 To 2
If N(I) > N(J) Then
T = N(I): N(I) = N(J): N(J) = T
End If
Next
Next
Text1.Text = N(0): Text2.Text = N(1): Text3.Text = N(2)
End Sub

方法2
Private Sub Command2_Click()
Dim B(2) As Object
Dim I As Long, J As Long, T As String
Set B(0) = Text1: Set B(1) = Text2: Set B(2) = Text3
For I = 0 To 1
For J = I + 1 To 2
If CLng(B(I).Text) > CLng(B(J).Text) Then
T = B(I).Text: B(I).Text = B(J).Text: B(J).Text = T
End If
Next
Next
End Sub
第4个回答  推荐于2018-03-20
Private Sub Command1_Click()
Dim a As Single, b As Single, c As Single,t as single
a = val(Text1.Text)
b = Teval(xt2.Text)
c = val(Text3.Text)
If a > b Then t=b:b=a:a=t
If a > c Then t=c:c=a:a=t
If b > c Then t=c:c=b:b=t

Text1.Text = a
Text2.Text = b
Text3.Text = c
end sub追问

看不懂teval和:。。。。

追答

val 是将文本转换成数字
判断大小只要这样3句就ok
原则:a放最小数
If a > b Then t=b:b=a:a=t a大于b,就a b交换, a就是小的值,b是大的值,t是过渡数
If a > c Then t=c:c=a:a=t 如果 a值还是大于c,那么c最小,把他换给a,a最小
If b > c Then t=c:c=b:b=t 经过2个交换b c都是大数,在比较他们大小,大的给c,b第二大

本回答被提问者和网友采纳

vb任意输入3个整数,按照由小到大排序输出。
用户的这一行 If a > b > c Then是错误的,任何一门语言都是按照运算符优先级从左至右依次计算得出结果的,显然两个>运算符优先级是相同的,所以从左至右依次算。可以参考以下代码:Dim a As Single, b As Single, c As Single a = Text1.Text b = Text2.Text c = Text3.Text '无...

vb任意输入3个整数,按照由小到大排序输出。
end sub

vb编程,任意输入3个整数,按照由小到大排序输出.(代码纠错)
解决办法就是:将声明语句放在变量使用之前。改成这样:Dim a, b, c As Integer a = Text1.Text b = Text2.Text c = Text3.Text d = Text4.Text 2、末尾的“d = Text4.Text”,应该是你将赋值方向搞反了,本来是要输出的,却变成了“输入”。3、其中的一些判断,发生了混乱。根据以上...

vb编程,任意输入3个整数,按照由小到大排序输出.(代码纠错)
如果你的代码没有强制声明变量,那么,去掉 Dim a, b, c As Integer 如果有,改成 Dim a, b, c As Integer Dim d As String a = CInt(Text1.Text)b = CInt(Text2.Text)c = CInt(Text3.Text)猜你是想显示排序的结果 d="c,b,a"应该改成 d=c1 & "," & b1 & "," & a1 ...

VB编程题 输入xyz三个数,按从小到大的次序显示
源程序如下:1. 利用InputBoxb函数输入3个数,存放到数值型变量中,然后对其进行比较。2. 对三个数进行排序,只能通过两两对比,一般可用三条单分支IF语句来实现。3 .要显示多个数据,可以用“;”逐一显示,也可利用“&”字符串连接将多个变量连接显示。解题:先在窗体上画一个按钮,代码如下:Priva...

用VB编写一个程序, 输入a、b、c三个数,要求按由大到小的顺序显示...
Private Sub Command1_Click()x = InputBox("输入第一个数")y = InputBox("输入第二个数")z = InputBox("输入第三个数")If x < y Then t = x: x = y: y = t If x < z Then t = x: x = z: z = t If y < z Then t = y: y = z: z = t Print x, y, z...

用VB编写一个程序, 输入a、b、c三个数,要求按由大到小的顺序显示
Private Sub Form_Click()Dim A(1 To 3), I, J, X As Integer For I = 1 To 3 A(I) = Val(InputBox("请输入数字"))Next I For I = 1 To 2 For J = I + 1 To 3 If A(I) < A(J) Then X = A(I)A(I) = A(J)A(J) = X End If Next J Next I For I =...

在VB中怎样区分和使用integer\\long\\single\\double\\string等?
例如:123456,45678&都是长整数型。2、实数型(浮点数或实型数)实数型数据是指带有小数部分的数。注意:数12和数12.0对计算机来说是不同的,前者是整数(占2个字节),后者是浮点数(占4个字节)实数型数据分为浮点数和定点数。浮点数由三部分组成:符号,指数和尾数。在VB中浮点数分为两种:...

使用vb对输入的三个数字由大到小进行排序?
= c Then Print "输入数据无法运算,请重新输入"GoToi End If If a < b Then x = b If x < c Then x = c y = b z = a End If Else x = a If b > c Then y = b z = c Else y = c z = b End If End If Print "自大至小排序为:"; x, y, z End Sub ...

VB程序设计题:任意三个数ABC,将其按由大到小的顺序显示出来
'假设要比较的三个数输入在Text1,text2,text3,结果放在text4 Private Sub Command1_Click()Dim a, b, c, d As Double a = Val(Text1.Text)b = Val(Text2.Text)c = Val(Text3.Text)If a < b Then d = a: a = b: b = d If b < c Then d = b: b = c: c = d ...

相似回答