EDN首页   博客首页

日志档案

发表于 2008-4-22 21:00:34

2

标签: C程序  交换两个数  技巧  SWAP  

这样交换两个数,妙!

/*

怎样把两个数交换?
这个问题太菜了,脑中或许一下就出现了代码
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;
}

 

系统分类: 软件开发   |   用户分类: C编程技巧   |   来源: 原创   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(315)    回复(1)  

投一票您将和博主都有获奖机会!