01.使用中间变量(项目开发普遍适用)
C语言源代码:
#include<stdio.h>
main()
{
int a,b,temp;
a=5;
b=10;
temp=a;//开始交换,把a的值赋给中间变量temp
a=b;
b=temp;
printf("a=%d,b=%d",a,b);
return 0;
}
运行结果:
02:使用数字加减(int、 double数值类型适用)
c语言源代码:
#include<stdio.h>
main()
{
int a,b;
a=5;
b=10;
a=a+b;//a=15
b=a-b;//b=15-10=5,注意此时b已经重新赋值为5了
a=a-b;//a=15-5=10.交换完成
printf("a=%d,b=%d",a,b);
return 1;
}
运行结果:
03.通过——按位异或运算(若面试要求不使用中间变量则方法02,03都行)
注:按位异或运算符:^ (二进制相同为0,相异为1)
C语言源代码:
#include<stdio.h>
main()
{
int a,b;
a=5;//二进制为0101
b=10;// 1010
//开始交换(a与b以二进制的形式进行异或运算)
a=a^b;//a=1111=15
b=a^b;//b=0101=5
a=a^b;//a=1010=10
printf("a=%d,b=%d",a,b);
return 2;
}
运行结果:
04.通过指针来试试:
#include<stdio.h>
void swap(int*x,int*y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}
main()
{
int a,b;
a=5;
b=10;
int *p1;
int *p2;//定义指针变量用来存放地址
p1=&a;//取a的地址
p2=&b;//取b的地址
swap(p1,p2);//直接调用函数
printf("a=%d,b=%d",a,b);
return 3;
}
运行结果: