zoukankan      html  css  js  c++  java
  • 数值交换

    实例十四:数值交换

    显然,实现数值交换的方法有很多,在此列举三种进行对比:

    方法一:利用第三变量进行交换
    定义:a,b,temp
    {
      temp=a
      b=a
      b=temp
    }

    方法二:不利用第三变量
      a,b
    {
      a=a+b
      b=a-b
      a=a-b
    }


    方法三:利用位操作符,逻辑与方法二类似
    a,b
    {
      a=a^b
      b=a^b    等价于  b=(a^b)^b
      a=a^b    等价于  a=(a^b)^(a^b)
    }

    {
      a ^= b;
      b ^= a;
      a ^= b;
    }

    方法一和方法二 用数字代入就可以明白了,故不加以解释。


    方法三解释:

    为了看得清晰,使用三个变量
       a=3,b=4,c
    a     0000 0011 --3
    b     0000 0100 --4

    c=a^b   0000 0111 --7

    b=c^b   0000 0011 --3
    a=c^b   0000 0100 --4

    代码:

    int _tmain(int argc, _TCHAR* argv[])
    {
      int a, b;

      cout << "请输入要进行交换的两个数值:";
      cin >> a >> b;

      a ^= b;
      b ^= a;
      a ^= b;

      cout << endl << "结果为:";
      cout << a << " " << b;

      system("pause");
      return 0;
    };

  • 相关阅读:
    Merge k Sorted Lists
    N-Queens
    N-Queens II
    Reorder List
    使用AJAX实现文件上传时Illegal invocation错误
    php页面开启错误提示
    php分割最后一个逗号后面的字符
    微信卡券添加(微擎系统)
    php请求php
    Navicat MySQL连接Linux下MySQL的问题解决方案
  • 原文地址:https://www.cnblogs.com/gd-luojialin/p/6636029.html
Copyright © 2011-2022 走看看