[C]经典算法——不用第三变量交换两数
2008-03-23 11:06
253 查看
以下代码利用中间变量temp交换两数
#include <stdio.h>
main()
{
int x,y,temp;
scanf("%d%d",&x,&y);
printf("x=%d,y=%d/n",x,y);
temp=x;
x=y;
y=temp;
printf("x=%d,y=%d/n",x,y);
}
写出不用第三变量交换x和y值的算法
用算术或异或
x = x + y;
y = x - y;
x = x - y;
或
x = x^y;// 只能对int,char..
y = x^y;
x = x^y;
或
x ^= y ^= x;
#include <stdio.h>
main()
{
int x,y,temp;
scanf("%d%d",&x,&y);
printf("x=%d,y=%d/n",x,y);
temp=x;
x=y;
y=temp;
printf("x=%d,y=%d/n",x,y);
}
写出不用第三变量交换x和y值的算法
用算术或异或
x = x + y;
y = x - y;
x = x - y;
或
x = x^y;// 只能对int,char..
y = x^y;
x = x^y;
或
x ^= y ^= x;
相关文章推荐
- 经典算法——不用第三变量交换两数
- 交换两个变量而不用第三变量
- java中不用第三变量交换两个变量的值
- 变量之间交换数据(不用第三变量)
- 经典算法面试题(一):两数交换的三种方法
- 交换两数,不使用第三变量,且考虑溢出问题
- ADO.NET面试题之基础篇不用第三变量交换两个变量的值
- 面试题:不用第三变量交换ab值
- 两数交换_不用临时变量
- 不用第三变量做值交换,不用sizeof判断int字节数
- Java里不用第三变量完成两个数字的交换
- 交换两数,不使用第三变量,且考虑溢出问题
- 不用引入第三变量交换两个变量的值
- 交换a,b值,并且不用第三变量
- 交换两数,不使用第三变量,且考虑溢出问题
- 不用第三个变量进行交换两数
- 不用第三变量交换整型数值的三种方法
- 不用第三变量交换二个变量值
- 不用引入第三变量交换两个变量的值
- 两数交换不借助第三变量