您的位置:首页 > 其它

每日一题:不适用第三个变量,实现交换两个输入参数

2010-11-18 21:49 232 查看

每日一题:不适用第三个变量,实现交换两个输入参数

问题描述:编写一个函数swap,输入两个参数a, b,要求函数中不能够使用第三个变量,函数输出交换之后的a和b。

思路:如果程序中不能够使用另外的第三个变量的话,只能够通过所谓的“技巧"来实现。这里使用的技巧如下:a ^ 0 = a. a ^ a = 0(异或运算)

实现代码:

#include <stdio.h>
#include <stdlib.h>
// 交换两个数据,但是不适用第三个变量
void swap(int* a, int* b)
{
*b = (*a) ^ (*b);
*a = (*a) ^ (*b);
*b = (*a) ^ (*b);
}
int main()
{
int a = 3;
int b = 4;
printf("before swap, a = %d, b = %d\n", a, b);
swap(&a, &b);
printf("after swap, a = %d, b = %d\n", a, b);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: