题目:将a,b的值进行交换,并且不适用任何中间变量
思路:异或运算
c语言:
// Change.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<stdio.h>
void change(int a, int b){
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("%d\n",a);
printf("%d\n",b);
}
int main(int argc, char* argv[])
{
change(3,4);
return 0;
}
Java:
public class App {
public static void change(int a, int b){
a = a^ b;
b = a ^ b;
a = a ^ b;
System.out.println("a="+a);
System.out.println("b="+b);
}
public static void main(String[] args) {
change(4, 2);
}
Python:
def change(a,b):
a = a ^ b
b = a ^ b
a = a ^ b
print a ,b
if __name__ == "__main__":
change(2,4)
另外一种解题思路是用和运算,但是如果a 和b 是两个很大的数值,a+b会越界
#include "stdafx.h"
#include<stdio.h>
void change(int a, int b){
a = a + b;
b = a - b;
a = a - b;
printf("%d\n",a);
printf("%d\n",b);
}
int main(int argc, char* argv[])
{
change(3,4);
return 0;
}