交换值而不使用第三个变量(Swapping values without using third variable)
优质
小牛编辑
133浏览
2023-12-01
在许多情况下,程序员需要交换两个变量的值。 在这里,我们将学习如何交换两个整数变量的值,这可能导致交换任何类型的值。 变量之间的值可以通过两种方式交换 -
- 在第三个(临时)变量的帮助下
- 不使用任何临时变量
我们已经学会了first method 。 在这里,我们将学习第二种方法。 虽然它看起来像魔术,但它只是一个小技巧。 想象一下,我们现在分别在a和b中存储了两个数字1和2 -
如果我们添加a和b(1 + 2)并将其存储到a然后a将变为3而b仍然是2。
现在我们从a(3)的新值中减去b(2)并将其存储到b然后a仍然是3而b变为1.注意1早先由a保持。
现在我们从a(3)中减去具有新值(1)的b并将其存储到b(a = 3 - 1)然后a保持先前由b保持的值2。
结论 - 交换值。
算法 (Algorithm)
我们现在将逐步算法的方式定义上述过程 -
START
Var1, Var2
Step 1 → Add Var1 and Var2 and store to Var1
Step 2 → Subtract Var2 from Var1 and store to Var2
Step 3 → Subtract Var2 from Var1 and store to Var1
STOP
伪代码 (Pseudocode)
从上面的算法,我们可以为这个程序绘制伪代码 -
procedure swap(a, b)
a ← a + b // a holds the sum of both
b ← a - b // b now holds the value of a
a ← a - b // a now holds value of b
end procedure
实现 (Implementation)
上述算法的C实现应该如下所示 -
#include <stdio.h>
int main() {
int a, b;
a = 11;
b = 99;
printf("Values before swapping - \n a = %d, b = %d \n\n", a, b);
a = a + b; // ( 11 + 99 = 110)
b = a - b; // ( 110 - 99 = 11)
a = a - b; // ( 110 - 11 = 99)
printf("Values after swapping - \n a = %d, b = %d \n", a, b);
}
输出 (Output)
该计划的输出应为 -
Values before swapping -
a = 11, b = 99
Values after swapping -
a = 99, b = 11