c语言如何交换两个数的值-创新互联

这篇文章将为大家详细讲解有关c语言如何交换两个数的值,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

成都创新互联是专业的津南网站建设公司,津南接单;提供成都做网站、成都网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行津南网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

c语言交换两个数的值

程序中有两个数a,b,其中a=4,b=5,现在希望交换两个数的值,使得a=5,b=4.

推荐课程:C语言教程

方法1: 使用一个临时变量来进行保存,这应该也是大家最容易想到的方法

参考代码:

#include 
int main()
{
    int a = 4;
    int b = 5;
    int nTemp;
    printf("交换前a,b的值为:\n");
    printf("a=%d\n", a);
    printf("b=%d\n", b);
    printf("\n");
    nTemp = a;
    a = b;
    b = nTemp;
    printf("----------------------------------我是分割线------------------------------------\n");
    printf("交换前a,b的值为:\n");
    printf("a=%d\n", a);
    printf("b=%d\n", b);
    return 0;
}

运行结果:

c语言如何交换两个数的值

方法2:使用加减法来进行交换,这种方法实际上就是先把a+b的结果暂时先保存在变量a中,然后通过这改变后的a和原始的b进行减法就可以得到交换后的b,但是这种方法有一个缺陷,就是a和b都是int类型,a+b的结果可以越界。

参考代码:

#include 
int main()
{
    int a = 4;
    int b = 5;
    printf("交换前a,b的值为:\n");
    printf("a=%d\n", a);
    printf("b=%d\n", b);
    printf("\n");
    a = a + b;
    b = a - b;
    a = a - b;
    printf("----------------------------------我是分割线------------------------------------\n");
    printf("交换前a,b的值为:\n");
    printf("a=%d\n", a);
    printf("b=%d\n", b);
    return 0;
}

运行结果:

c语言如何交换两个数的值

方法3:使用乘除法来进行交换,这种方法和方法2类似,只是用a*b代替a+b放在a中暂存,后面思路一样,这种方法有着和方法2一样的缺陷,就是越界问题,而且更加容易越界。

参考代码:

#include 
int main()
{
    int a = 4;
    int b = 5;
    printf("交换前a,b的值为:\n");
    printf("a=%d\n", a);
    printf("b=%d\n", b);
    printf("\n");
    a = a * b;
    b = a / b;
    a = a / b;
    printf("----------------------------------我是分割线------------------------------------\n");
    printf("交换前a,b的值为:\n");
    printf("a=%d\n", a);
    printf("b=%d\n", b);
    return 0;
}

方法4:使用异或的方法来进行交换,这种方法不存在之前越界的缺陷,是一种很完美的方法,这种方法主要利用了异或的特性a^b的值先保存到a,因为a^b^b=a所以可以顺利完成交换。

参考代码:

#include 
int main()
{
    int a = 4;
    int b = 5;
    printf("交换前a,b的值为:\n");
    printf("a=%d\n", a);
    printf("b=%d\n", b);
    printf("\n");
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
    printf("----------------------------------我是分割线------------------------------------\n");
    printf("交换前a,b的值为:\n");
    printf("a=%d\n", a);
    printf("b=%d\n", b);
    return 0;
}

方法5:使用移位的方法,把原来的int类型的a,把a的值拆分成高16位和低16位,相当于多了16位的暂存空间可以周转,但是此方法的缺陷也显而易见,就是如果被赋值的a或者b超过了16位,这种方法就会发生错误。

参考代码:

#include 
int main()
{
    int a = 32123;
    int b = 12345;
    printf("交换前a,b的值为:\n");
    printf("a=%d\n", a);
    printf("b=%d\n", b);
    printf("\n");
    a <<= 16;
    a |= b;
    b = a >> 16;
    a = a & 0xffff;
    printf("----------------------------------我是分割线------------------------------------\n");
    printf("交换前a,b的值为:\n");
    printf("a=%d\n", a);
    printf("b=%d\n", b);
    return 0;
}

运行结果:

c语言如何交换两个数的值

关于c语言如何交换两个数的值就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


标题名称:c语言如何交换两个数的值-创新互联
分享链接:http://ybzwz.com/article/dodoid.html