每日一题:不适用第三个变量,实现交换两个输入参数
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;
}
相关文章推荐
- 每日一题:不适用第三个变量,实现交换两个输入参数
- 不借助第三个参数实现两个变量的值互相交换
- 不借助第三个变量实现两个变量交换的思考
- C/C++:在不使用第三个变量的情况下实现两个变量的交换
- PHP 不使用第三个变量实现交换两个变量的值
- 不使用第三个变量,实现两个变量值的交换
- PHP中如何不引入第三个变量的条件下实现:交换两个变量的值?
- JAVA不借助第三个变量实现两个变量交换的思考
- java实现两个变量值交换不使用第三个变量
- 交换两个变量的值,不使用第三个变量的方法及实现
- 不借助第三个变量实现两个变量之间的值传递和交换
- 通过异或运算实现两个变量的交换(不需借助第三个变量)
- 引用为参数实现两个字符串变量的交换
- 不借助第三个变量实现两个变量交换的思考
- 交换两个变量的值,要求不使用第三个变量实现
- 不使用第三个变量实现交换两个变量的值和<你的名字>
- 不使用第三个参数和库函数实现两个数字的交换(异或的妙用)
- 不借助第三个变量实现两个变量交换的思考
- 基于JAVA的不借助第三个变量实现交换两个变量的值的小代码
- 不通过第三个变量实现两个整型变量的交换