C语言中用不同的方法交换两个数的值

  在开始学习C语言的过程中,我们一定都做过这样一道题,交换两个数的值。可能大部分人都会这道题,但今天我想试试用不同的方法做这道题。
  1、创建临时变量

#include<stdio.h>
int main()
{
      int a = 10;
      int b = 20;
      int c = 0;     //创建临时变量c来暂时存储a的值
      printf("交换前的两数为: %d %d",a,b);
      c = a;
      a = b;
      b = a;
      printf("交换后的两数为: %d %d",a,b);
  return 0;
}

  运算结果如下所示
在这里插入图片描述
  2、在不创建临时变量的情况下交换两个数的值

#include<stdio.h>
int main()
{
     int a = 10;
     int b = 20;
     a = a + b;    
     b = a - b;     //这里利用了一个小小的数学关系解决了交换问题
     a = a - b;
  return 0;
}

  运算结果如下:
在这里插入图片描述
  3、还是在不创建第三个变量的情况下,利用异或关系,将两个十进制数用二进制数表示出来,异或是指参与运算的两个数,相对应的位相同用0表示,不同用1表示,异或的符号为“^”。代码如下:

#include<stdio.h>
int main()
{
     int a = 6;     //          a = 000000110
     int b = 7;     //          b = 000000111
     printf("交换前的两数为%d,%d\n",a,b);
     a = a^b;     // a = a^b = 000000001
     b = a^b;     // b = a^b = 000000110
     a = a^b;     // a = a^b = 000000111
     printf("交换后的两数为%d,%d\n",a,b);
 return 0;
}

  运算结果如下
在这里插入图片描述
小结
以上就是用三种不同方法交换两个数的值,大家有兴趣的可以自己下去试试实践一下,不过需要注意的是在取值时一定要考虑数的范围,小心造成溢出。如果大家有不同的方法也欢迎留言评论,我们可以一起讨论。

猜你喜欢

转载自blog.csdn.net/qq_43232778/article/details/82822796
今日推荐