c语言swap(a,b)值交换的4种实现方法
这篇文章所要表述的内容的确很简单,写之前,我纠结了很久:写与不写。平常swap(a,b)值交换,我们基本都是使用第一种方法,对于数学较好的人,可能会想到第二种方法,想到时,一定感觉很好,。对于汇编或对位有理解的人,可能会想到第三种方法,这个方法很妙。但,真正促使我写这篇文章的,还是第四种方法,妙,真的很妙,先(b = a),我是真没想到,我想,这么好的东西,尽管简单,但值得发表,以此共享。
void swap(int &a, int &b)
{
//方法一:
int tmp = 0;
tmp = b;
b = a;
a = tmp;
//方法二:
//a = a+b;
//b = a-b;
//a = a -b;
//方法三:
//a ^= b ^= a ^= b;
//方法四:
//a = a+b-(b=a);
}
int main(void)
{
int a = 3;
int b = 4;
printf("before swap: a = %d, b = %d\n", a, b);
swap(a, b);
printf("after swap: a = %d, b = %d\n", a, b);
return 0;
}
结果:
before swap: a = 3, b = 4
after swap: a = 4, b = 3
关于传参方式有三种:值传参、地址传参、引用传参(C++方法),上面使用的是第三种,引用传参,因为这种传参方式使得swap里面实现更为直观。当然,也可以使用第二种传参方式地址传参,不过,值传参是不行的哦。
相关推荐
-
c语言swap(a,b)值交换的4种实现方法
这篇文章所要表述的内容的确很简单,写之前,我纠结了很久:写与不写.平常swap(a,b)值交换,我们基本都是使用第一种方法,对于数学较好的人,可能会想到第二种方法,想到时,一定感觉很好,.对于汇编或对位有理解的人,可能会想到第三种方法,这个方法很妙.但,真正促使我写这篇文章的,还是第四种方法,妙,真的很妙,先(b = a),我是真没想到,我想,这么好的东西,尽管简单,但值得发表,以此共享. swap(a,b)值交换的四种方法: 复制代码 代码如下: void swap(int &a, int &a
-
Map获取键值,Map的几种遍历方法总结(推荐)
Map获取键值 Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象. Map的接口 Map---实现Map Map.Entry--Map的内部类,描述Map中的按键/数值对. SortedMap---扩展Map,使按键保持升序排列 关于怎么使用,一般是选择Map的子类,而不直接用Map类. 下面以HashMap为例 public static void main(String args[]) { HashMap hashmap =new HashMap();
-
c语言实现两个值互相交换的函数
c语言中实现两个值互换的函数. 1. #include <stdio.h> void swap(int n1, int n2) { int tmp; tmp = n1; n1 = n2; n2 = tmp; } int main(void) { int a, b; puts("please input two integers."); printf("a = "); scanf("%d", &a); printf("
-
使用位运算、值交换等方式反转java字符串的多种方法(四种方法)
在本文中,我们将向您展示几种在Java中将String类型的字符串字母倒序的几种方法. StringBuilder(str).reverse() char[]循环与值交换 byte循环与值交换apache-commons-lang3 如果是为了进行开发,请选择StringBuilder(str).reverse()API.出于学习的目的,我们可以研究char[]和byte方法,其中涉及到值互换和移位运算技术,这些技术对于了解StringBuilder(str).reverse()API黑匣子背后
-
Go语言题解LeetCode888公平糖果交换示例详解
目录 一 描述 二 分析 三 答案 一 描述 888. 公平的糖果交换 - 力扣(LeetCode) (leetcode-cn.com) 爱丽丝和鲍勃拥有不同总数量的糖果.给你两个数组 aliceSizes 和 bobSizes ,aliceSizes[i] 是爱丽丝拥有的第 i 盒糖果中的糖果数量,bobSizes[j] 是鲍勃拥有的第 j 盒糖果中的糖果数量. 两人想要互相交换一盒糖果,这样在交换之后,他们就可以拥有相同总数量的糖果.一个人拥有的糖果总数量是他们每盒糖果数量的总和. 返回一个
-
php小技巧 把数组的键和值交换形成了新的数组,查找值取得键
复制代码 代码如下: $cityname = array_flip($city_DB[name]); //把数组的键和值交换形成了新的数组 $city_name = array_search($city_id,$cityname,true); //查找值取得键
-
易语言求正玄值方法
易语言求正玄值,希望大家都能学懂. 非无私奉献,拒绝看经验不回复,学懂了记得按照下面做: 在底部点击相关按钮,给我投票和点赞. 有心得或者疑问,点击相关按钮反馈. 具体操作请看图. 1.易语言新建一个windows窗口 点击进入代码编辑区 2.我们输入 求正弦 () 这个函数 3.展开这个函数 可以发现这个函数只有一个参数 4.这个参数我重点讲解 它的单位是弧度 我们一般用度数表示 角度转换城弧度 用角度乘以#pi / 180 我们输入30 × #pi ÷ 180 如图 5.我们结合 调试输出这
-
对Python中实现两个数的值交换的集中方法详解
如下所示: #定义两个数并赋值 x = 1 y = 2 #第1种方式:引入第三方变量 z = 0 z = x x = y y = z #第2种:不引入第三方变量 x = x+y y = x-y x = x-y #第3种:推荐 x,y = y,x print("x=%d,y=%d"%(x,y)) 以上这篇对Python中实现两个数的值交换的集中方法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.
-
C语言之函数返回值与参数传递案例教程
C语言函数返回值与参数传递 一:参数传递 C语言的函数中必不可少的就是参数传递,可以采用传值和传指针两种方式. 1.传值的形式:只是将参数值的拷贝传给函数,并非参数本体如: int test(int x,int y) { x=2*y; return x; } int main(void) { int a=0,b=5; printf("%d,%d\n\r",test(a,b),a); return 0; } 运行结果为: 10,0 即传值方式只可以将实参传递给函数,不可以改变实参本身.
-
Python交换字典键值对的四种方法实例
目录 前言 一.当值唯一时 1. 使用zip进行交换 2. 使用for循环遍历交换 3. 使用dict.items()交换 二.当值不唯一时 总结 前言 在学习过程中发现有时候交换字典的键和值,会使得我们最后的输出结果更加直观明了,整理出以下四种交换方式(data是原字典,new_data 是交换后的字典) 一.当值唯一时 1. 使用zip进行交换 data= {'A':1, 'B':2, 'C':3} new_data = dict(zip(data.values(), data.keys()
随机推荐
- 使用vbs删除host文件域址内容
- python中文件变化监控示例(watchdog)
- Linux 中的 Install命令
- MySQL5.7 group by新特性报错1055的解决办法
- jQuery+PHP星级评分实现方法
- 关于nginx+php5.3.8+eclipse3.7工作空间的配置方法
- windows下mysql双向同步备份实现方法
- JNDI,JTA和JMS简介
- 关于Poi读取Excel引发内存溢出问题的解决方法
- python实现从网络下载文件并获得文件大小及类型的方法
- asp.net(c#)文件下载实现代码
- asp.net 反射减少代码书写量
- Python通过RabbitMQ服务器实现交换机功能的实例教程
- Country使 MS-DOS 子系统能使用国际时间、日期、货币、大小写转换和小数分隔符
- MongoDB的查询方法
- JDBC SQL语法
- 基于LayUI实现前端分页功能的方法
- Ruffy javascript 学习笔记
- js匿名函数的调用示例(形式多种多样)
- CentOS 6.4 中安装php5.2.17 的方法