- 学习 C 示例时间
- 通过示例学习 C - 主页
- C 示例 - 简单的程序
- C 示例 - 循环/迭代
- C 示例 - 模式
- C 示例 - 数组
- C 示例 - 字符串
- C 示例 - 数学
- C 示例 - 链表
- C 编程实用资源
- 通过示例学习 C - 快速指南
- 通过示例学习 C - 资源
- 通过示例学习 C - 讨论
无需变量交换两个数字
在许多情况下,程序员需要交换两个变量的值。在这里,我们将学习如何交换两个整数变量的值,这可能会导致交换任何类型的变量。变量之间值可以通过两种方式交换 -
- 借助第三个(临时)变量
- 不使用任何临时变量
我们已经学到了 第一种方法。在这里,我们将学习第二种方法。虽然它看起来像一个魔法,但它只是一个小的诀窍。想象一下我们有两个数字 1 和 2 分别存储在 a 和 b 中 -
如果我们添加 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。
结论 - 值都被交换。
算法
我们现在将按照循序渐进的算法方式定义上述过程 -
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
伪代码
从以上算法中,我们可以为这个程序绘制伪代码 -
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
实现
上述算法的 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); }
输出
该程序的输出应该是 -
Values before swapping - a = 11, b = 99 Values after swapping - a = 99, b = 11
simple_programs_in_c.htm
广告