欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[C语言]两个数的交换

程序员文章站 2024-03-07 19:31:45
...

简介

  本文将介绍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:有什么不对的地方还望大家批评指正,或者有什么意见或者建议大家也可以提出来一起讨论。