`
jiangzhenghua
  • 浏览: 591941 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

交换两个数不使用第三方变量

阅读更多

题目很简单:
---------------------------------
--有两个整型变量:int a=2^31-1;
    int b=-2^31;要求不通过第三方变量,交换a,b的值?
--------------------------------------------------
  思路:不使用第三方变量,肯定在a,b上做文章,可以在一个变量上获取跟a,b有某种关系的值,再通过某种关系
   一一分别交换数值!
---------------------------------------------
   方法:
   1.如果是两个较小数值的数可以通过下面的方法解决:
    a=a+b;
    b=a-b;
    a=a-b;
------------------------------------------------------
   2.显然,本题的变量数值过大,如果采用方法1,会产生错误,数值超出整形范围,可以采用异或运算(^)

   提示:真异或假的结果是真,假异或真的结果也是真,真异或真的结果是假,假异或假的结果是假。就是说两个值不相同,则异或结果为真。反之,为假。简单点说就是异或的两个值'相同为假,不同为真'。

    a=a^b;
    b=a^b;
    a=a^b;
-------------------------------------------
   从上可以看出,方法2是个万能的方法,方法1只适合较小数值的运算!

分享到:
评论

相关推荐

    不用第三方变量交换两数的值

    不用第三方变量交换两数的值 不用第三方变量交换两数的值 不用第三方变量交换两数的值

    Python3之不使用第三方变量,实现交换两个变量的值

    以上这篇Python3之不使用第三方变量,实现交换两个变量的值就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:python交换两个变量的值方法对Python中实现...

    两个数字的交换,三种方法

    使用三种方法交换来个数字 方法一:使用第三方变量交换数据; 方法二:使用加减法,并且不使用第三方...方法三:使用异或方法交换,并且不使用第三方变量 思路:一个数异或另一个数偶次,都等于这个数本身。

    C#不借助第三个变量实现两整数交换

     如果不借助第三方变量,有几种实现的方法:  1.异或算法(这种方法不借助第三个变量,也不会产生溢出,比较安全,但整数类型)  int a = 10;  int b = 5;  a ^= b;  b ^= a;  a ^= b;  Console....

    对Python中实现两个数的值交换的集中方法详解

    #第2种:不引入第三方变量 x = x+y y = x-y x = x-y #第3种:推荐 x,y = y,x print("x=%d,y=%d"%(x,y)) 以上这篇对Python中实现两个数的值交换的集中方法详解就是小编分享给大家的全部内容了,希望能给大家一个参考...

    思维训练(二)如何找到缺失的数

    题目 在一个无序数组中有99个不重复的正整数,范围为1到100,唯独缺少1个1到100中...异或在java语言中也常用来 不借助第三方变量来交换两个数的值 以上为发散思维扩展 对于本题,将所有数异或,得到的结果就是这个奇次整数

    你必须知道的495个C语言问题

    3.15 我要检查一个数是不是在另外两个数之间,为什么if(abc)不行? 3.16 为什么如下的代码不对?inta=1000,b=1000;longintc=a*b; 3.17 为什么下面的代码总是给出0?doubledegC,degF;degC=5.0/9*(degF-32); ...

    C语言经典例题100道

    两个字符串连接程序 87.结构体变量传递 88.读取数字的整数值并打印出该值个数的* 89.数据加密 90.专升本一题 91.时间函数举例1 92.时间函数举例2 93.时间函数举例3 94.一个猜数游戏 95.家庭财务管理小程序 96.计算...

    《你必须知道的495个C语言问题》

    3.15 我要检查一个数是不是在另外两个数之间,为什么if(a b c)不行? 40 3.16 为什么如下的代码不对?int a=1000, b=1000; long int c=a * b; 40 3.17 为什么下面的代码总是给出0?double degC, degF; degC= ...

    《C#经典编程220例》.(明日科技).【带书签】-共3部分

    实例007 为项目添加第三方控件 9 实例008 为项目添加已有窗体 11 第2章 c#语言基础 12 实例009 利用for循环输出多行语句 13 实例010 输入并输出姓名 14 实例011 使用值类型和引用类型输出不同的字段 15 实例012 判断...

    c语言经典案例

    实例182 使用指针交换两个数组 中的最大值 257 实例183 输出二维数组有关值 259 实例184 输出二维数组任一行 任一列值 260 实例185 将若干字符串按照字母 顺序输出 262 实例186 用指向函数的指针比较大小 263 实例...

    c++ 面试题 总结

    私有变量不能直接访问。 -------------------------------------------------------------------------- 2.输入一个字符串,将其逆序后输出。(使用C++,不建议用伪码) #include using namespace std; void ...

    组态软件开发平台SuperCxHMI.zip

    VBScript具备丰富的函数库,可以轻松与第三方基于COM模型的软件系统交换,如使用ADO访问数据库,调用Excel等。 强大的编辑器 支持事件响应函数框架自动生成。 结合上下文列出方法和属性表帮助...

    C#微软培训资料

    第三章 编写第一个应用程序 .20 3.1 Welcome 程序 .20 3.2 代 码 分 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 3.5 小 结 .27 第二部分 C#程序设计基础.28 第四章 数 据 类 型 .28 4.1 值 类 型...

    学通Java的24堂课

    1.5.1 情景应用1——计算两个整数的和 19 1.5.2 情景应用2——输出当前日期 19 1.5.3 情景应用3——在控制台接收用户输入数字 20 1.5.4 情景应用4——计算用户输入数字的乘积 21 1.6 自我测试 22 1.7 行动指南 ...

Global site tag (gtag.js) - Google Analytics