VB習題已知x,y,z 三個數,使得x>y>z.

題目:

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?

解答:

書上的沒錯,注意每一次比較之後,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

添加新評論

暱稱
郵箱
網站