# C 程序：交换两个数字

> 原文： [https://www.programiz.com/c-programming/examples/swapping](https://www.programiz.com/c-programming/examples/swapping)

#### 在此示例中，您将学习使用两种不同的技术在 C 编程中交换两个数字。

要理解此示例，您应该了解以下 [C 编程](/c-programming "C tutorial")主题：

*   [C 数据类型](/c-programming/c-data-types)
*   [C 编程运算符](/c-programming/c-operators)
*   [C 输入输出（I/O）](/c-programming/c-input-output)

* * *

## 使用临时变量交换数字

```c
#include<stdio.h>
int main() {
      double first, second, temp;
      printf("Enter first number: ");
      scanf("%lf", &first);
      printf("Enter second number: ");
      scanf("%lf", &second);

      // Value of first is assigned to temp
      temp = first;

      // Value of second is assigned to first
      first = second;

      // Value of temp (initial value of first) is assigned to second
      second = temp;

      printf("\nAfter swapping, firstNumber = %.2lf\n", first);
      printf("After swapping, secondNumber = %.2lf", second);
      return 0;
} 
```

**输出**

```c
Enter first number: 1.20
Enter second number: 2.45

After swapping, firstNumber = 2.45
After swapping, secondNumber = 1.20 
```

在上述程序中，为`temp`变量分配了`first`变量的值。

然后，将`second`变量的值分配给`first`变量。

最后，将`temp`（其保存`first`）分配给`second`。 这样就完成了交换过程。

* * *

## 交换数字而不使用临时变量

```c
#include <stdio.h>
int main() {
    double a, b;
    printf("Enter a: ");
    scanf("%lf", &a);
    printf("Enter b: ");
    scanf("%lf", &b);

    // Swapping

    // a = (initial_a - initial_b)
    a = a - b;   

    // b = (initial_a - initial_b) + initial_b = initial_a
    b = a + b;

    // a = initial_a - (initial_a - initial_b) = initial_b
    a = b - a;

    printf("After swapping, a = %.2lf\n", a);
    printf("After swapping, b = %.2lf", b);
    return 0;
} 
```

**输出**

```c
Enter a: 10.25
Enter b: -12.5
After swapping, a = -12.50
After swapping, b = 10.25 
```