VB习题已知x,y,z 三个数,使得x>y>z.If x < y Thena = xx = yy = aEnd If If y < z Thena = yy = zz = a End IfIf x < y Thena = xx = yy = aEnd If我要问的是,前两个if已交换了X,Y,Z的大小了,最后怎么还要再交换“If x < y Then”
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/18 19:05:11
VB习题已知x,y,z 三个数,使得x>y>z.If x < y Thena = xx = yy = aEnd If If y < z Thena = yy = zz = a End IfIf x < y Thena = xx = yy = aEnd If我要问的是,前两个if已交换了X,Y,Z的大小了,最后怎么还要再交换“If x < y Then”
VB习题已知x,y,z 三个数,使得x>y>z.
If x < y Then
a = x
x = y
y = a
End If
If y < z Then
a = y
y = z
z = a
End If
If x < y Then
a = x
x = y
y = a
End If
我要问的是,前两个if已交换了X,Y,Z的大小了,最后怎么还要再交换“If x < y Then”
那样的话不时又还原了吗?
是不是书上的印错了,应该是If x < z Then?
VB习题已知x,y,z 三个数,使得x>y>z.If x < y Thena = xx = yy = aEnd If If y < z Thena = yy = zz = a End IfIf x < y Thena = xx = yy = aEnd If我要问的是,前两个if已交换了X,Y,Z的大小了,最后怎么还要再交换“If x < y Then”
书上的没错,注意每一次比较之后,x,y,x的值都可能变化.
第一次比较是把 第1、2个数从大到小排列
第二次比较是把第1、2中较小的数与 第3个数比较,进行排列,较小的数放在z中,较大的数放在y中
所以,再进行第三次比较时,这时的y是 (1,2)中较小的数与 3相比较 而比较大的数.而x是原来(1,2)中较大的数.
举个例子:
一开始,x=1,y=2,z=3
第一次比较结束:
x=2,y=1,z=3
第二次比较,是比较现在的y与z
比较结束:
x=2,y=3,z=1
第三次比较,这时的x,y已经不是一开始的x,y的值了
比较结束后
x=3,y=2,z=1