/*
怎样把两个数交换?
这个问题太菜了,脑中或许一下就出现了代码
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条评论)
登录后参与讨论