C语言编程题交换两个变量的值

交换两个变量是编程中一个基本且常见的操作,目的是将一个变量的值赋给另一个变量,并且同时将另一个变量的值赋给前一个变量。在C语言中,有多种方法可以实现这个操作,每种方法都有其适用的场景和优缺点。

1、使用第三个临时变量

最常见和最直观的方法,使用一个临时变量来保存其中一个变量的值。

#include <stdio.h>

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

    printf("交换前:a = %d, b = %d\n", a, b);

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

    printf("交换后:a = %d, b = %d\n", a, b);

    return 0;
}

2、不使用临时变量,使用加减法

这种方法通过加法和减法来交换两个变量的值。

#include <stdio.h>

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

    printf("交换前:a = %d, b = %d\n", a, b);

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

    printf("交换后:a = %d, b = %d\n", a, b);

    return 0;
}

3、不使用临时变量,使用异或运算

使用位运算中的异或运算来交换两个变量的值。

#include <stdio.h>

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

    printf("交换前:a = %d, b = %d\n", a, b);

    a = a ^ b;
    b = a ^ b;
    a = a ^ b;

    printf("交换后:a = %d, b = %d\n", a, b);

    return 0;
}

4、使用指针和函数

通过使用指针和一个辅助函数来交换两个变量的值。

#include <stdio.h>

void swap(int *x, int *y) {
    int temp;
    temp = *x;
    *x = *y;
    *y = temp;
}

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

    printf("交换前:a = %d, b = %d\n", a, b);

    swap(&a, &b);

    printf("交换后:a = %d, b = %d\n", a, b);

    return 0;
}

5、使用宏定义

使用宏定义来实现交换两个变量的值。

#include <stdio.h>

#define SWAP(x, y) do { int temp = x; x = y; y = temp; } while (0)

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

    printf("交换前:a = %d, b = %d\n", a, b);

    SWAP(a, b);

    printf("交换后:a = %d, b = %d\n", a, b);

    return 0;
}

推荐阅读
cjavapy编程之路首页