如何使用C语言实现交换两个数?
小标 2018-07-25 来源 : 阅读 1436 评论 0

摘要:本文主要向大家介绍了如何使用C语言实现交换两个数,通过具体的内容向大家展示,希望对大家学习C语言有所帮助。

本文主要向大家介绍了如何使用C语言实现交换两个数,通过具体的内容向大家展示,希望对大家学习C语言有所帮助。

方法一:最普通方法--建立临时变量

思路分析:建立一个临时变量,通过temp=a,a=b,b=temp来实现交换。

缺点:这只是一种假交换,由于这只是在函数内部临时变量间的交换,所以当函数退出,函数栈帧被释放,原本的值并没有被交换。

int swap(int _x, int _y)

 

{

 

    int  z = _x;//通过建立z这个临时变量来交换_x,_y

    _x = _y;

    _y = z;

    printf("%d %d", _x, _y);

    return 0;

 

}

   

方法二:建立临时变量--建立指针

思路简介:取两个数的地址,在swap方法中再用指针指向地址交换,这时候为数值交换(函数调用结束后原空间的值也得到了交换)。

   

int swap(int *_x, int *_y)//主函数中把两个数的地址传过来

{

    int  tmp = *_x;//定义中间变量 然后交换两个数

    *_x = *_y;

    *_y = tmp;

    printf("%d %d", *_x, *_y);

}

   

方法三:不建立临时变量--加减交换

思路分析:取两个数的和,然后通过减去另一个数来得到另一个数。

缺点:两个数的和可能会越界。(数值小的时候可以用)。同样的这是一种假交换,不能使用函数。

   

int main()

{

    int a = 1;

    int b = 2;

     

    a = a + b;//a=1+2

    b = a - b;//b=3-2

    a = a - b;//a=3-1

 

    printf("a=%d,b=%d", a, b);

    return 0;

}

   

方法四:最佳方法--异或方法

思路简介:通过二进制异或方法交换,如a=3二进制为11,b=2的二进制为10,按位异或(两个值相同为0,否则为1)。

   

int mian()

{

    int a = 3;

    int b = 5;

     

    a = a ^ b;                     //a = 3 ^ 5 

    b = a ^ b;                     //b = (3 ^ 5) ^ 5 

    a = a ^ b;                     //a = (3 ^ 5) ^ 3 

 

    printf("a=%d,b=%d", a, b);

    return 0;

}

本文由职坐标整理并发布,了解更多内容,请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程