跳到主要内容

C++ 编程:交换两个数字

示例 1:交换数字(使用临时变量)

#include <iostream>
using namespace std;

int main()
{
int a = 5, b = 10, temp;

cout << "交换前。" << endl;
cout << "a = " << a << ", b = " << b << endl;

temp = a;
a = b;
b = temp;

cout << "\n交换后。" << endl;
cout << "a = " << a << ", b = " << b << endl;

return 0;
}

输出

交换前。
a = 5, b = 10

交换后。
a = 10, b = 5

在上述示例中,进行交换操作使用了三个变量。

首先,第一个变量的内容被复制到 temp 变量中。然后,第二个变量的内容被复制到第一个变量中。

最后,temp 变量的内容被复制回第二个变量,从而完成交换过程。

你也可以使用以下方式仅用两个变量来进行交换。

示例 2:不使用临时变量交换数字

#include <iostream>
using namespace std;

int main()
{

int a = 5, b = 10;

cout << "交换前。" << endl;
cout << "a = " << a << ", b = " << b << endl;

a = a + b;
b = a - b;
a = a - b;

cout << "\n交换后。" << endl;
cout << "a = " << a << ", b = " << b << endl;

return 0;
}

此程序的输出与上面的第一个程序相同。

让我们看看这个程序是如何工作的:

  1. 初始时,a = 5b = 10
  2. 然后,我们用代码 a = a + bab 相加,并将结果存储在 a 中,意味着 a = 5 + 10。因此,现在 a = 15
  3. 接着我们使用代码 b = a - b,意味着 b = 15 - 10。因此,现在 b = 5
  4. 再次,我们使用代码 a = a - b,意味着 a = 15 - 5。因此最终,a = 10

因此,数字已经被交换了。

注意: 我们可以使用乘法和除法来替代加法和减法。然而,如果其中一个数字是 0,这种方法将不起作用。

int a = 5, b = 10;

// 使用乘法和除法进行交换
a = a * b; // a = 50
b = a / b; // b = 5
a = a / b; // a = 10