面试题 在不使用第三变量的情况下,交换两个数的值

例如 a=10,b=20,要求交换他们两个的值,并且不能使用第三变量

第一种方法:加减法

#include <stdio.h>
int main()
{
    
    
int a=10;
int b=20;
printf("交换前:a=%d     b=%d\n",a,b);
a=a+b;
b=a-b;
a=a-b;
printf("交换后:a=%d     b=%d\n",a,b);
system("pause");
return 0;
}

这样就完成了a和b的交换,但是我们还有更好的方法,就是
第二种方法:异或法

#include <stdio.h>
#include <stdlib.h>
int main()
{
    
    
int a=10;
int b=20;
printf("交换前:a=%d     b=%d\n",a,b);
a=a^b;
b=a^b;
a=a^b;
printf("交换后:a=%d     b=%d\n",a,b);
system("pause");
return 0;

在这里插入图片描述

将a和b异或的值暂时存放在a中,让b异或上a和b异或的值,就得到了原先的a,此时b=原先的a,我们再让a异或a和b的异或就可以得到b,谢谢观看。

猜你喜欢

转载自blog.csdn.net/weixin_54748281/article/details/113767717