详解交换两个数的值

来源:互联网 发布:机顶盒硬件检测软件 编辑:程序博客网 时间:2024/05/16 14:06

交换两个数值:简单来说就是将内存a中的值变成内存b中的值,将内存b中的值变成内存a中的值,而要想达到这种效果需要的就是交换他们彼此的地址(传地址),如下图所示


(1)第一种也是效率最高的一种做法就是引入第三变量,具体的算法和代码实现如下:

int main(){int tmp=0;int a=4;int b=5;tmp=a;a=b;b=tmp;printf("a=%d\tb=%d\n",a,b);}
除了引入第三变量之外还可以用两个变量来实现,使用加法和乘法进行运算,但是在用加法和乘法时可能会发生越界的情况,同时有0时也不能使用乘法,在具体的题目中要具体的分析各种方法,再此只给出相应的实现方式。

(2)用与式形式交换,具体的算法实现和代码实现如下所示:

#include<stdio.h>int main(){int a=4;int b=5;a=a^b;b=a^b;a=a^b;printf("a=%d\tb=%d\n",a,b);}
(3)用指针的形式来实现,再此可以封装一个函数来实现,也可以直接在主函数中实现这种简单的功能,具体的代码如下:

#include<stdio.h>int main(){int a=4;int b=5;int *p;int *q;p=&a;q=&b;//第一种实现*p=*p^*q;*q=*p^*q;*p=*p^*q;//第二种实现*p=*p*(*q);*q=*p/(*q);*p=*p/(*q);//第三中实现*p=*p+*q;*q=*p-*q;*p=*p-*q;printf("a=%d\tb=%d\n",a,b);}





0 0
原创粉丝点击