题目要求:将数a、b的值进行交换,并且不使用任何中间变量。
程序如下:
#include
void swapValue1(int &a, int &b) //使用中间变量交换数据
{
int temp = a;
a = b;
b = temp;
}
void swapValue2(int &a, int &b)//使用加减运算完成数据交换
{
a = a + b;
b = a - b;
a = a - b;
}
void swapValue3(int &a, int &b)
在程序中实现交换两个数的功能并不复杂,但如果不使用中间变量,需要动一下脑筋。在本文介绍了两个方法(其实原理都是一个)。其基本原理是数的中和。也是说,通过某种运算(二元运算)将a和b两个数变成一个数,并保存在其中一个变量中。然后再通过同 样的运算符将a或b中和掉。这样实际上是利用了a或 b本身作为了中间变量。
先看第一个算法。
static class Num
{
int a;
int b;
}
public static void swap1(Num num)
{
num
不使用其他变量交换两个整型的值:
#include
void main(){
int a = 3;
int b = 4;
a = a ^ b;//使用异或交换
b = b ^ a;
a = a ^ b;
printf(%d, %d\n, a, b);
a = a - b;//使用加减交换
b = a + b;
a = b - a;
printf(%d, %d\n, a, b);
a ^= b ^= a ^= b;
printf(