如何在没有第三个变量的情况下交换两个变量的值

如题所述

第1个回答  2016-06-26
#include<stdio.h>
int main()
{
int a = 2, b = 3;
a = a + b;
b= a-b;
a= a-b;
printf("a=%d,b=%d",a,b);
    return 0;
}

本回答被提问者采纳

如何只用与或非运算,且不用第三个变量,也不用任何函数来交换两个数...
用异或操作就可以交换两个数了( ^ 就是异或操作)b = a ^ b;a = a ^ b;b = a ^ b;因为:a ^ b ^ b = a,这是异或的一个特性 如果异或用于或非表示的话,就是:a ^ b = (a or b) and (!a or !b)注:a or b 表示"a 或 b"a and b 表示"a 与 b"!a 表示 "...

如何不使用第三个变量来交换两个数的值?
具体过程:第一句“a=b-a”求出ab两点的距离,并且将其保存在a中;第二句“b=b-a”求出a到原点的距离(b到原点的距离与ab两点距离之差),并且将其保存在b中;第三句“a=b+a”求出b到原点的距离(a到原点距离与ab两点距离之和),并且将其保存在a中。完成交换。此算法与标准算法相比,...

如何在不使用第三个变量的情况下交换两个数的值
a=b;b=c 通过这样的方式来达到交换a和b的值。那么如何在不使用第三个变量的情况下交换两个数的值呢?以下有一个方法:我们还是令a=1,b=2,所以a

不借用第三个变量,怎么把a,b的值互换
方式一:三次加减操作 int a =10;int b=5;a= a+b;b=a-b;a=a-b;方式二:三次异或操作 int a=2=010(二进制);int b=4=100(二进制);异或运算如下:a=a^b=010^100=110(此时,a的值改变为二进制的110)b=a^b=110^100=010(此时,b的值改变为二进制的010,即十进制的2)a=a^b=...

交换两个数,不用第三块儿内存!请问怎么实现?
可以使用加减法来交换两个数,不需要使用第三块儿内存。例如,假设你想交换变量 x 和 y 的值,你可以这样写:x = x + y y = x - y x = x - y 或者,也可以使用位运算来交换两个数,例如:x = x ^ y y = x ^ y x = x ^ y 在上面的代码中,我们使用了异或运算符 ^。异或...

java中交换两个数的值,不出现第三个变量,初学者,求完整程序
创建一个类,在该类中定义两个变量并为其指定初始值,然后交换两个变量的值,要求不允许借助第三个变量,只能使用异或运行实现两个变量值的交换。你可以参考一下以下方法import java.util.Scanner;public class VariableExchange { public static void main(String[] args){ System.out.println("...

编程C语言,交换两个变量的值,要求:运行如下:结果变量交换前a=2,b=3...
不使用第三个变量的算术运算交换方法:int a=2, b=3;a=b-a; b=b-a; a=b+a;不使用第三个变量的 位运算交换法:int a=2, b=3;a=a^b; b=a^b; a=a^b;使用第三个变量的算术运算交换方法:int a=2, b=3, c;c = a; a=b; b=c;...

不用第三个变量,将变量a和b的值进行互换的操作是什么
a=a+b; b=a-b; a=a-b; 输出a和b,就是交换后的结果 采纳哦

在不用第三方参数的情况下,交换两个参数的值 C++\/C
上面这个用得很巧,巧就巧在他们无形中使用了中间变量。因为第二行的时候的i已经是他们第一次异或的结果了,所以再异或一个就得到了i本身的值,所以j的值就是原来i的值了。而这时j就相当于最初的i了,而i则是他们第一次异或的结果,那么两者异或就相当于j的值了。你去思考一下这个:如果三个数...

下面程序的功能是不用第三个变量,实现两个数的对调操作.
答案是对的,的确交换了a,b的值。可以这么理解:令scanf读入两个整数为x和y,并分别赋值给a,b。此时a=x,b=y。①:a = a + b = x + y;②:b = a - b = ( x + y ) - y = x;③:a = a - b = ( x + y ) - x = y;...

相似回答