如何实现两个数交换的交换以及宏定义的编写
2014-10-16 12:18
162 查看
【语句实现方法】
方法1:不使用中间变量
●利用位运算符
a = a^b; b = a^b; a = a^b; → a^= b^ = a^ = b;(不用考虑越界问题)
【解释】:
对于a^a =0, a^0 =a
a = a^b
b = a^b =( a^b) ^b =a^(b ^b) = a^0 = a(交换律)
a = a^b = (a^b) ^a = a^a^b = b; (结合律,并且有a = a^b,a = b)
●不使用位运算符
a= a + b; b = a - b;a = a – b;
(需要考虑越界问题)
方法2:使用中间变量
temp= a; a = b; b = temp;
【宏定义方法】
方法1:
#define SWAP(a,b) \
a= a^b;\
b= a^b;\
a= a^b;
方法2:
#define SWAP(a,b) \
a= a + b ;\
b= a - b;\
a= a - b;
【函数实现方法】
方法1:利用指针
intswap(int *p,int*q)
{
int temp;
temp = *p;
*p = *q;
*q = temp;
}
方法2:利用引用
intswap(int &a,int&b)
{
int temp;
temp = a;
a = b;
b = temp;
}
方法1:不使用中间变量
●利用位运算符
a = a^b; b = a^b; a = a^b; → a^= b^ = a^ = b;(不用考虑越界问题)
【解释】:
对于a^a =0, a^0 =a
a = a^b
b = a^b =( a^b) ^b =a^(b ^b) = a^0 = a(交换律)
a = a^b = (a^b) ^a = a^a^b = b; (结合律,并且有a = a^b,a = b)
●不使用位运算符
a= a + b; b = a - b;a = a – b;
(需要考虑越界问题)
方法2:使用中间变量
temp= a; a = b; b = temp;
【宏定义方法】
方法1:
#define SWAP(a,b) \
a= a^b;\
b= a^b;\
a= a^b;
方法2:
#define SWAP(a,b) \
a= a + b ;\
b= a - b;\
a= a - b;
【函数实现方法】
方法1:利用指针
intswap(int *p,int*q)
{
int temp;
temp = *p;
*p = *q;
*q = temp;
}
方法2:利用引用
intswap(int &a,int&b)
{
int temp;
temp = a;
a = b;
b = temp;
}
相关文章推荐
- 如何不用第三个变量实现两个数的交换
- 如何交换两个数(C语言实现)
- 如何在Java中实现将两个数相互交换的方法
- 关于C语言交换两个数的实现方法以及个人心得
- 利用PROGISP实现ARDUINO IDE编写的程序的下载以及如何把AVR单片机做成ARDUINO板
- 在VS里编写BDC Xml文件时,如何实现IntelliSense能力?
- VB的ShowInTaskbar功能分析以及用VC的实现 如何隐藏对话框在工具栏上的按钮
- 如何在DataGrid控件中实现编辑、删除、分类以及分页操作
- java中如何实现文件打包上传以及自动解压
- 如何在DataGrid控件中实现编辑、删除、分类以及分页操作
- 专题:如何实现 网站在线人数以及历史访问人数的统计
- ASP如何利用XMLHTTP实现表单的提交以及cookies或session的发送和Referer
- 在c#中如何实现对图象的翻转、放大、缩小操作以及缩微图
- 如何实现 网站在线人数以及历史访问人数的统计
- 如何在DataGrid控件中实现编辑、删除、分类以及分页操作
- samba 启动和重新启动 以及在虚拟系统和实际系统怎么实现软件交换
- 如何用SQL语句实现精确搜索以及模糊搜索
- 什么是守护进程,以及如何编写
- 如何在DataGrid控件中实现编辑、删除、分类以及分页操作
- 如何用SQL语句实现精确搜索以及模糊搜索