原创 这样交换两个数,妙!

2008-4-22 21:00 2671 9 9 分类: 软件与OS

/*


怎样把两个数交换?
这个问题太菜了,脑中或许一下就出现了代码
void swap1(int *a,int *b)
{
 int temp;
 temp=*a;
 *a=*b;
 *b=temp;
}
很好,的确交换了位置,可是我还有个问题
如果没有临时变量,能做到吗?
可能你会绞尽脑汁想到
void swap2(int *a,int *b)
{
 *a=*a+*b;
 *b=*a-*b;
 *a=*a-*b;
}
很不错,当然在两个数不是很大是可以
如果考虑溢出,好像美很有点缺憾
不过我这还有一种方法
void swap3(int *a,int *b)
{
 *a=*a^*b;
 *b=*a^*b;
 *a=*a^*b;
}
"^"这是什么?异或呀!
哦,太妙了,好像没什么问题了
我们应该记住方法三
不要把方法一在脑中固化!!


*/
/******************实验例程********************/
#include
void swap1(int *a,int *b)
{
 int temp;
 temp=*a;
 *a=*b;
 *b=temp;
}
void swap2(int *a,int *b)
{
 *a=*a+*b;
 *b=*a-*b;
 *a=*a-*b;
}
void swap3(int *a,int *b)
{
 *a=*a^*b;
 *b=*a^*b;
 *a=*a^*b;
}
int main()
{
 int a="123",b=321;
 swap1(&a,&b);
 printf("a=%d,b=%d",a,b);
 swap2(&a,&b);
 printf("a=%d,b=%d",a,b);
 swap3(&a,&b);
 printf("a=%d,b=%d",a,b);
 return 0;
}


 

文章评论0条评论)

登录后参与讨论
我要评论
0
9
关闭 站长推荐上一条 /2 下一条