不借助第三个变量,交换两个变量值的3种方式

  今天在我们学校的OJ上做题,一道非常简单的题,突然想试试能不能不借助第三个变量,交换两个变量值。蒙出来一半了已经,好可惜。现在把方法写在这里,希望以后不要忘记。

 1 void fun1()
 2 {
 3     int a = 10, b = 100;
 4
 5     a = a + b;
 6     b = a - b;
 7     a = a - b;
 8     printf("%d\n%d\n", a, b);
 9 }
10
11 void fun2()
12 {
13     int a = 10, b = 100;
14     a = a * b;
15     b = a / b;
16     a = a / b;
17     printf("%d\n%d\n", a, b);
18 }
19
20 void fun3()
21 {
22     int a = 10, b=100;
23     a ^= b;//^异或相同为0,相异为1.
24     b ^= a;
25     a ^= b;
26     printf("%d\n%d\n", a, b);
27 }

感谢网友 https://blog.csdn.net/sinat_29173167/article/details/52904252 的思路。

原文地址:https://www.cnblogs.com/lizhe-Ning/p/9158475.html

时间: 2024-08-25 14:02:03

不借助第三个变量,交换两个变量值的3种方式的相关文章

不使用临时变量交换两个变量值

题目:不使用临时变量交换两个变量值 分析:使用加.减.乘.亦或(aba==b),四种方法分别如下: //方法一:利用加法 int Swap3(int *x, int *y) { *x = *x + *y;//*x是二者和 *y = *x - *y;//*y是*x *x = *x - *y;//*x是*y } //方法二:利用减法 int Swap1(int *x, int *y) { *x = *x - *y;//*x是二者差值 *y = *x + *y;//*x是*y *x = *y - *x

不使用临时变量 交换两个变量值

不使用临时变量 交换两个变量值1.$a = $a+$b;$b = $a-$b;$a= $a-$b; 2.list($a, $b) = array($b, $a); 3. $a = $a ^ $b;$b = $a ^ $b;$a = $a ^ $b;

JavaScript交换两个变量值的七种解决方案

前言 这篇文章总结了七种办法来交换a和b的变量值 1 2 var a = 123; var b = 456; 交换变量值方案一 最最最简单的办法就是使用一个临时变量了,不过使用临时变量的方法实在是太low了 1 2 3 4 var t; t = a; a = b; b = t; 首先把a的值存储到临时变量中,然后b赋值给a,最后拿出临时变量中的a值赋给b,这个办法是最基本的了 交换变量值方案二 下面的方案都不会有临时变量,我总结了一下,其实不使用临时变量的思路都是让其中一个变量变成一个a和b都有

不借助第三个变量交换两个数值类型变量的值

原文地址:http://blog.csdn.net/web_hwg/article/details/75045689 方法一 最简单的方法是用一个临时变量 var a = 10, b = 20; var temp = a; a = b; b = temp; 方法二 让其中一个变量变成一个与a和b都有关系的值 a = a + b; b = a - b; a = a - b; 或者 a = a - b; b = a + b; a = b - a;

交换两个变量值的几种算法

一.添加临时变量(最常见) var a = 1, b = 2, c; c = a; a = b; b = c; 二.算数运算(仅限number类型) var a = 3, b = 5; a = a - b; // a = -2 , b = 5; b = a + b; // a = -2, b = 3; a = b - a; // a = 5, b = 3; 三.数组特性 var a = 1; b = 2; a = [ a , b ]; b = a[ 0 ]; a = a[ 1 ]; 四.ES6解

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

交换两个变量(a和b)的值,最简单的办法是另定义一个变量(c),将a赋给c,然后调换. 下面给出几种不使用第三个变量的办法: 1.利用运算交换两个变量值 a = b - a; b = b - a; a = b + a; 2.位运算 通过异或运算来交换值 a=a^b; b=a^b; a=a^b; 3.交换指针地址

PHP交换两个变量值

方法一:交换两个变量的最简单方法是使用第三个临时变量 1 <?php 2 $a = 15; 3 $b = 27; 4 // 交换逻辑 5 echo "<br>交换前的数字为:<br>"; 6 echo "a =".$a." 且 b=".$b; 7 $temp = $a; 8 $a = $b; 9 $b = $temp; 10 echo "<br>交换后的数字为: <br>"

C#交换两个变量值的多种写法

在学习.Net/C#或者任何一门面向对象语言的初期,大家都写过交换两个变量值,通常是通过临时变量来实现.本篇使用多种方式实现两个变量值的交换. 假设int x =1; int y = 2;现在交换两个变量的值. 使用临时变量实现 static void Main(string[] args) { int x = 1; int y = 2; Console.WriteLine("x={0},y={1}",x, y); int temp = x; x = y; y = temp; Cons

不借助第三个变量实现两个变量交换及原理分析

通常的交换两个变量a,b的过程为 var temp; temp=a; a=b; b=temp; 需借助上面的第3个临时变量temp. 无需借助第3个临时变量交换两个变量a,b d的方法: 逻辑运算(异或) 下面的异或运算可以实现a,b的交换,而无需借助第3个临时变量: a = a ^ b; b = a ^ b; a = a ^ b; 这个交换两个变量而无需借助第3个临时变量过程,其实现主要是基于异或运算的如下性质: 1.任意一个变量X与其自身进行异或运算,结果为0,即X^X=0 2.任意一个变量