返回

用C语言实现两个值交换的四种方法

发布时间:2023-02-17 18:47:55 162

一.题中已给两个值的数值

二.随意输出两个整数(变量)的数值

为避免麻烦,我在这里统一用变量(就是第二种)来敲一遍,希望可以给各位解决些麻烦,仅供参考,希望指正。另外,下面的代码我用了不懂颜色进行了标注,方便大家理解,发现相同之处和不同之处。

1.引入第三方(暴力求解)

为生动理解,我举下例子:

你有三个瓶子,1号瓶子:可乐   2号瓶子:雪碧   3号:空瓶

现在想要把可乐倒进2号瓶子,把雪碧倒进1号瓶子,此时3号瓶子就是辅助的,所以一般的顺序为:

将可乐倒进3号瓶子—>将雪碧倒进1号瓶子—>再将3号瓶子中装的可乐倒进2号瓶子。

因此代码可以借鉴

#include

#include

int main()

{

int a,b,c;

scanf("%d%d",&a,&b);

printf("变化前:a=%d  b=%d\n",a,b);

c=a;

a=b;

b=c;

printf("变化后:a=%d  b=%d\n",a,b);

return  0;

}

2.第二种    加减运算, 不创建临时变量

#include

#include

int main()

{

int a,b;

scanf("%d%d",&a,&b);

printf("变化前:a=%d  b=%d\n",a,b);

a=a+b;

b=a-b;

a=a-b;

printf("变化后:a=%d  b=%d\n",a,b);

return  0;

}

3.第三种   异或运算, 不创建临时变量

#include

#include

int main()

{

int a,b;

scanf("%d%d",&a,&b);

printf("变化前:a=%d  b=%d\n",a,b);

a=a^b;

b=a^b;

a=a^b;

printf("变化后:a=%d  b=%d\n",a,b);

return  0;

}

4.第四种  位运算 (2进制)注:不适用于大数字

#include

#include

int main()

{

int a,b;

scanf("%d%d",&a,&b);

printf("变化前:a=%d  b=%d\n",a,b);

a=a<<8;

a=a+b;

b=a>>8;

a=a&0xff;

printf("变化后:a=%d  b=%d\n",a,b);

return  0;

}

总结  :除第一个外 ,其他均未引入其他的变量。

          采用引入第三方变量的方法,代码可读性高,执行效率更快。但是 第三方还是第三方,多了就是多了,就会导致  “溢出”的问题。

         对于异或运算,它的可读性较差,执行的效率不高。

总之:对于这种题目相对简单,大家应注意灵活运用。

       ​










特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
C语言基础2(结构体) 2023-02-17 18:11:54