[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:有什么不对的地方还望大家批评指正,或者有什么意见或者建议大家也可以提出来一起讨论。
上一篇: C语言_指针_函数指针
下一篇: django_orm查询性能优化