关于交换两个变量

原创 2012年03月26日 16:47:48

int a = 1;

intb = 2;

 方法一:加减法

 a =a + b;

 b =a - b;

 a =a - b;

 方法二:异或操作

a = a ^ b;

b = a ^ b;

a = a ^ b;

方法三:乘除法

a = a * b ;

b = a / b ;

a = a / b ;

总结:
此题的本质就是求一种操作X,要保证X是可逆操作,设其逆操作为Y, 也即,若 p X q = r 成立,那么一定有 r Y q = p 成立
那么首先令
a = a X b;
这样a保存了a和b进行X操作后的结果
然后再
b = a Y b
因为此时a = a X b, 又因为Y是X的逆操作,所以此时 b = a
最后再
a = a Y b
此时a = a X b, 但是 b = a,所以 a = b

纵观上面几种方法,它们的操作都是可逆的
加法 <-> 减法
乘法 <-> 除法
异或 <-> 异或 (异或操作的逆操作是它本身)

相关文章推荐

C语言交换两个变量数值的几种方法

因为经常见到这类题目,就自己总结了以下几种办法 1. 创建中间变量 这是最快也是最简单的办法,例如:#includeint main() { int a=10; int b...

不借助第三个变量交换两个整数

假设两个数x和y,则有: 方法1,算术运算(加减): x=x+y;  //x暂存两数之和 y=x-y;  //y为两数之和减去y,即原来的x x=x-y;  //x为两数之和减...

两个数交换算法(不需要临时变量)

两个数交换算法(不需要临时变量) 两个数交换算法(包含不用第3个变量而直接交换的情况)2006-12-17 20:07对两个数进行交换,在C中可采用指针实现,而在C++可使用引用来实现,无论...

不使用临时变量交换两个变量的值(异或,加减,乘除)

使用异或交换两个变量的值 异或有一些有趣的用法,这里用异或的性质求出数组内一个唯一一个只出现一次的元素。 一般我们交换两个变量的值的时候,一般会用到一个辅助变量,当然,也有一些脚本语言如Python...

C语言中交换两个指针变量所指向的值

C语言中,指针变量有一级指针*p和二级指针**p,下面是使用指针交换两个变量的值。 1、使用一级指针交换: #include "stdafx.h" #include void swap(int...

java不使用中间变量交换两个数

在程序中实现交换两个数的功能并不复杂,但如果不使用中间变量,就需要动一下脑筋。在本文介绍了两个方法(其实原理都是一个)。其基本原理就是数的中和。也就是说,通过某种运算(二元运算)将a和b两个数变成一个...

交换两个变量的值,不使用第三个变量

通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换。代码如下: int a,b; a=10; b=15; int t; t=a; a=b; b=t; 这种算法易于理解,特...

交换两个变量的值,不使用第三个变量

通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换。代码如下:int a,b;a=10; b=15;int t;t=a; a=b; b=t;这种算法易于理解,特别适合帮助初学者了解...

在C# 中不使用 第三方变量 来交换两个变量的值

1) 算术运算 简单来说,就是通过普通的+和-运算来实现。代码如下: int a,b; a=10;b=12; a=b-a; //a=2;b=12 b=b-a; //a=2;b=10 a=b+a; //...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于交换两个变量
举报原因:
原因补充:

(最多只允许输入30个字)