C语言小算法集锦---交换两个变量的值

c语言交换两个变量的方法:
   1.通过创建临时变量的方式交换两个变量的值
   2.通过求和的方式交换两个变量的值
   3.通过按位异或的方式交换两个变量的值
第1种方法需要引入额外的变量;第2种方法中如果要交换的两个值的数据较大,可能会导致数据溢出(不推荐该方法);第3种 方法是不是显得很高大上呢

下面是在VC++6.0下测试的交换两个变量的值的三种方法的完整测式代码:
#include <stdio.h>

//通过创建临时变量的方式交换两个变量的值
void swap1(int *x, int *y){
	int temp;

	temp = *x;
	*x = *y;
	*y = temp;
}

//通过求和的方式交换两个变量的值
void swap2(int *x, int *y){
	*x = *x + *y;
	*y = *x - *y;
	*x = *x - *y;
}

//通过按位异或的方式交换两个变量的值
void swap3(int *x, int *y){
	*x = *x^*y;
	*y = *y^*x;
	*x = *x^*y;
}

int main(void)
{
    int a = 2;
    int b = 5;

	printf("请输入a b的值:");
	scanf("%d %d", &a, &b);

	swap3(&a, &b);
    
	printf("交换后的数据为:");
	printf("a = %d,b = %d\n",a,b);

	return 0;
}
下面通过一个实例简要分析按位异或的方式交换两个变量的值的方式的运行机制:

/*
5: 0101
8: 1000
--------
*x:1101  
8: 1000
--------
*y:0101  --5
*x:1101
--------
*x:1000  --8 
*/

猜你喜欢

转载自blog.csdn.net/xiaoyuanwuhui/article/details/79330790