不创建临时变量交换两个数?这才是高手

  • 1.基本介绍
  • 1.代码编写
  • 总结

1.基本介绍

交换两个数,想必大家都很熟悉,也很容易写出来就可以实现,即创建一个临时变量,就可以完成两个数的交换,然后更牛逼的大佬却不用临时变量就完成了两个数的交换,真的可谓:大佬啊!那是怎么实现的呢,其实就是用到了数之间的基本逻辑关系,互相倒腾就能实现,说难也不难,只是我们平时习惯了创建变量来交换,今天就大开眼界,涨涨知识。


1.代码编写

1.异或(^)操作交换

void swapAB(int *a, int *b){*a = *a^*b;*b = *a^*b;*a = *a^*b;
}

2.加减操作交换:

void swapAB(int *a, int *b){*a = *a + *b;*b = *a - *b;*a = *a - *b;
}

3.创建临时变量交换

void swapAB(int *a, int *b){int temp = *a;*a = *b;*b = temp;
}

下面是程序的完整代码,将三种方法得以验证。

#include<stdio.h>
#include<string.h>
#include<windows.h>
#pragma warning (disable:4996)
void swapAB(int *a, int *b);
int main()
{int num1 = 0;int num2 = 0;printf("请输入两个数:");scanf("%d %d",&num1,&num2);printf("交换前的num1=%d num2=%d\n", num1, num2);swapAB(&num1, &num2);printf("交换后的num1=%d num2=%d\n",num1,num2);system("pause");return 0;
}

实验结果如下所示:


总结

以上就是今天要说的内容,在不创建临时变量的情况下交换两个数,即简洁又高效,在以后的编程中,我们可以尽可能的优化代码,做一名真正的程序猿。

不创建临时变量交换两个数,这才是高手相关推荐

  1. 不允许创建临时变量交换两个变量的内容

    在学习C语言的时候,涉及到两个变量值的交换,其中用到临时变量.如果在没有临时变量的情况下,该如何做呢? 方法一:C语言提供的异或运算就可以实现这样的操作.异或运算符"^"也称&qu ...

  2. C语言异或交换两个数的原理解析-大厂面试题:不使用第三变量交换两个数的值

    常用操作交换两个数的值 常用的交换两个数值的方法一般是采用第三个变量,这种方法简单易懂,用代码举例 int main() {//交换两个整形变量int a = 3;int b = 5;int c = ...

  3. 不用临时变量交换两个变量的值

    在学习C语言的时候,涉及到两个变量值的交换,其中用到临时变量. 类似于: temp=a;a=b;b=temp; 这样的语句,如果在没有临时变量的情况下,该如何做呢? 网络上的人们给出了两种方法: 一. ...

  4. C++实现1.交换两个整形变量的内容.2.不创建临时变量的条件下,交换两个数的内容.3.求是个整数中的最大值.4.将三个数按从大到小输出.5.求两个数的最大公约数.

    / //给定两个整型变量的值,并交换他们的值 int main(){ int a = 10; int b = 20; int temp = a; //创建一个临时变量,来做交换值的中间媒介 a = b ...

  5. 不借助第三个变量交换两个整数

    假设两个数x和y,则有: 方法1,算术运算(加减): x=x+y;  //x暂存两数之和 y=x-y;  //y为两数之和减去y,即原来的x x=x-y;  //x为两数之和减去现在的y(原来的x), ...

  6. C语言不用临时变量交换a,b的值

    现在有个题是: 要求不创建临时变量,来交换a,b的值,问有几种办法 首先先来一个创建临时变量交换的 int temp=0;temp=a;a=b;b=temp; 相信大家也都会,哈哈哈,就不多讲了 加减 ...

  7. 不允许创建临时变量,交换两个数的内容

    不允许创建临时变量,交换两个数的内容 #include <stdio.h> int main(int argc, char *argv[]) { int a = 10, b = 100; ...

  8. 【C语言刷题】交换两个变量(包含不创建临时变量)的解法

    目录 一.常规方法(引入空瓶变量) 二.题目要求,不允许创建临时变量 2.1 通过两数加法实现交换 2.2 按位异或操作符实现交换 题目:写代码实现两个变量的交换.(不允许创建临时变量) 一.常规方法 ...

  9. [笔试题]交换两个数不使用第三方变量 深入理解按位异或运算符

    异或运算相当与mod 2运算: 1^1 = 0, 1^0 = 1, 0^1= 1, 0 ^ 0 = 0 (1+1)%2 = 0, (1+0)%2 = 1, (0+1)%2 = 1, (0+0)%2 = ...

最新文章

  1. archsummit2017见闻和思考
  2. iOS网络编程之同步、异步、请求队列
  3. UICollectionView实现的图片的多选效果(本人已封装好,简单操作)
  4. 孪生三兄弟 CycleGAN, DiscoGAN, DualGAN
  5. Apache Spark 的设计与实现(job逻辑执行图)
  6. PHP 实现随机字符串,可作为随机密码
  7. C#学习日志三(流程控制语句)
  8. 如何把即时通讯软件做大做强?
  9. 一周总结汇总_2016-09-18
  10. f2fs系列之二: 重要的数据结构
  11. 参加软件测试工程师面试前,这些内容你一定要准备
  12. 面试中的智力题及编程实践
  13. ValueError: Argument must be a dense tensor:... got shape [6, 60, 160, 3], but wanted [6].
  14. 希尔伯特(Hilbert)空间和巴拿赫(Banach)空间
  15. 全国省市区(县)级地名xml(一)
  16. springboot总结(一)
  17. matlab2015 colormap,matlab中colormap函数
  18. 体验论文新神器!AMiner人工智能工具,自动溯源论文来龙去脉
  19. 直方图均衡化(II)
  20. php jwt使用案例,PHP JWT基础知识及其简单示例

热门文章

  1. 七段数码管数字字母显示
  2. openwrt系统mt7621固件编译
  3. Mac上超实用的6款软件,老用户都知道!
  4. nan在java种什么意思_关于JAVA中的NaN
  5. 微软为Bing开源搜寻人工智能算法 SPTAG
  6. electron-builder打包方式
  7. 阿里云+python+flask+ngnix零基础从零开始搭建微信公众号进行后台AI开发全套教程
  8. WebStorm 2019.1 正式发布,为 JS 和 TS 提供更好的智能感知
  9. 如何下载10米精度的谷歌地球高程数据
  10. 电影工作室PR片头模板 复古风格动态胶卷穿梭图文视频开场片头PR模板