不用第三个变量交换两个变量的值的几种方法
来源:互联网 发布:菲律宾妹子 知乎 编辑:程序博客网 时间:2024/05/21 10:32
第一次写Blog,心中有些激动o(∩_∩)o 。先在这儿为自己加加油~虽说只是些很简单的小程序,但是我希望自己能够一直坚持下去——做最好的自己,我能!
学过编程的人都知道,在交换两个变量的值时,大多数人习惯定义一个临时变量来存放其中的一个值,防止交换数值时其中一个变量的值被覆盖掉,比如下面的一段用C++写的很简单的程序:
/**交换两个变量的值*/#include <iostream>using namespace std;int main(){ int a=5,b=7; int temp=a; a=b; b=temp; cout<<"a="<<a<<" b="<<b<<endl; return 0;}
显然,输出结果为:a=7 b=5
有一天,我突然想,能不能不借助第三个临时变量,而只用这两个变量进行一些操作来交换其值呢?于是,我开始做了一些尝试,很快,我便想到了一种简单的方法:a=a+b;b=a-b;a=a-b;我为自己发现这个方法而感到很高兴,然后我便去网上搜了一下,想看看有没有更多的方法。结果,我发现,包括这个方法在内还有很多其他的方法,比如加减运算,乘除运算,位运算等等,甚至还可以将三条语句融合为一条,我感到很兴奋,于是我便将这几种方法整理了一下,C++代码如下:
/**不用第三个变量交换两个变量的值的几种方法*/#include <iostream>using namespace std;int main(){ int a=5,b=7; /**第一种方法*/ a=a+b; b=a-b; a=a-b; cout<<"a="<<a<<" b="<<b<<endl; /**第二种方法*/ a=a+b-(b=a); cout<<"a="<<a<<" b="<<b<<endl; /**第三种方法*/ a=a*b; b=a/b; a=a/b; cout<<"a="<<a<<" b="<<b<<endl; /**第四种方法*/ a=a*b/(b=a); cout<<"a="<<a<<" b="<<b<<endl; /**第五种方法*/ a=a^b; b=a^b; a=a^b; cout<<"a="<<a<<" b="<<b<<endl; /**第六种方法*/ b^=a^=b^=a; cout<<"a="<<a<<" b="<<b<<endl; return 0;}
输出结果为:
a=7 b=5
a=5 b=7
a=7 b=5
a=5 b=7
a=7 b=5
a=5 b=7
通过输出结果可知,以上六种方法都可以做到交换两个变量的值,第一、二种方法采用的的是加减运算,第三、四种方法采用的是乘除运算,第五、六种方法采用的是异或运算。前四种方法更容易理解,后两种方法因为是位运算,效率更高。
我相信,只要能善于提问,善于思考,善于总结,每个人都可以发现一些简单而又有趣的事情,总能够从平淡的生活中发现代码无尽的乐趣。
- 不用第三个变量交换两个变量的值的几种方法
- 不用第三个变量交换两个变量的值
- 不用第三个变量,直接交换两个变量的值
- 不用第三个变量,直接交换两个变量的值
- 不用第三个变量实现交换两个变量的值
- 不用第三个变量,直接交换两个变量的值
- 交换两个变量的值,不用第三个变量
- 不用第三个变量,直接交换两个变量的值
- 不用第三个变量,直接交换两个变量的值
- 不用第三个变量交换两个变量的值
- 不用第三个变量,如何交换两个变量的值
- 不用第三个变量交换两个变量的值
- php 不用第三个变量交换两个变量的值
- 不用引入第三变量交换两个变量的值
- java中不用第三变量交换两个变量的值
- 不用第三个变量交换2个变量的值
- 不用第三个变量交换两个变量
- 不用第三个变量交换两个变量
- SM模式下224.0.1.39/40和动态RP的组合
- 想用 windows live write 写博客可是不行
- #define、const、typedef的区别
- 各平台library path在中的配置
- 激励自己,让自己乐观对待
- 不用第三个变量交换两个变量的值的几种方法
- MySQL: InnoDB 还是 MyISAM?
- jquery插件总结与推荐
- Mysql Explain 详解
- 关于<c:if>没有<c:else>解决方案
- 二叉树
- Sicily1083(最小生成树)
- 页面上生成动态的时间
- 为MySQL选择合适的备份方式