[C语言]两个数的交换

简介

  本文将介绍c语言中一个最基本的问题:关于两个数的交换:

  • 第一种:创建变量完成交换;
  • 第二种:通过加减运算完成交换;
  • 第三种:通过二进制数的异或运算完成交换。

正文

  c语言中两个数字的交换方法有很多种,我将列出来三种最为常用办法。
  废话不多说,先看第一种(附上代码如下):

#include<stdio.h>
int main()
{
 int a=1;
 int b=2;
 int c=0;//创建第三个临时变量
 printf("a=%d,a=%d\n",a,b);
 c=a;
 a=b;
 b=c;//将三个数进行交换
 printf("a=%d,b=%d",a,b);
return 0;
}

这种方法就是最基本,也是最常用的方法,创建一个新变量c,先将一个数a放进这个空变量c,再将另一个数b放进变量a中,最后将c中的数字放入b中,这样就完成了数字的交换。
  接下来就是第二种方法(代码如下):

#include<stdio.h>
int main()
{
 int a=2;
 int b=4;
    printf("a=%d,b=%d\n",a,b);
 a=a+b;
 b=a-b;
 a=a-b;
    printf("a=%d,b=%d",a,b);
 return 0;
}

这种方法相对于上一种方法最大的优化就是只创建了两个变量,用两个数之间的加减运算来代替第三个变量,使代码的效率提高了不少。但是这种方法有一个致命的缺点,就是没有考虑到溢出的情况,如果两个数字的值超过了它的承受范围,那么它计算出来的结果当然也就是错误的。
  接下来是第三种办法 ,这种办法相对于前两种更加的高(you)大(bi)上(ge)(代码如下):

#include<stdio.h>
int main()
{
 int a=1;
 int b=2;
 printf("a=%d,b=%d\n",a,b);
 a=a^b;
 b=a^b;
 a=a^b;
 printf("a=%d,b=%d",a,b);
 return 0;
}

这种方法是采用二进制数中异或的办法,这种方法相对于第一种优化了不少,代码看起来也更加的高端简练,一般的小新是绝对想不到的,如果你能使出这种办法,一定会让周围人对你刮目相看!!!

总结

  本文介绍了三种c语言中关于两个整数交换的方法,希望大家可以从中提取出自己想要的相关知识。


PS:有什么不对的地方还望大家批评指正,或者有什么意见或者建议大家也可以提出来一起讨论。


猜你喜欢

转载自blog.csdn.net/Code_beeps/article/details/82822776