我编的很繁琐,而且错了,出不来,告诉我哪里错了并且给我一个简洁的编程吧
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
解释一下为什么错了吧!
看这一行 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
P.S. 楼下的利用了中间变量 t,通过冒泡排序来进行的运算,也很简单。
任何程序设计语言都没有类似 a > b > c 这样的表达式的,必须拆分为两部分: a > b And b > c
你的代码可以简化为:
Private Sub Command1_Click()看不懂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第二大