算法新手:交换两个变量A和B的值.

问题描述:

算法新手:交换两个变量A和B的值.
INPUT A,B
PRINT A,B
A=B,B=A
PRINT A,B
END
这是错的吗?为什么?
课本上的是:
INPUR A,B
PRINT A,B
x=A
A=B
B=x
PRINT A,B
END

当然是错的.你可以运行下试试.假设A=1,B=2运行完"A=B"后A=2,B=2,然后运行"B=A"后B=2,A和B都是2,没有完成交换.而x的作用是做辅助空间存储下A的值,避免被B的值覆盖.这种变量交换法也就是所谓的"三变量法"
也有只用两个变量完成交换的方法
1
A=A+B
B=A-B
A=A-B
2
A=A xor B
B=A xor B
A=A xor B如果把x=A,A=B,B=x写在同一行可以吗?
三行代码变成了一行,但计算机还是要执行三个步骤。
这样解释对不对?谢谢可以呀。执行结果和速度基本不会受到影响。用合适的分隔符分开就行了