不创建临时变量交换两个数,这才是高手
不创建临时变量交换两个数?这才是高手
- 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;
}
实验结果如下所示:
总结
以上就是今天要说的内容,在不创建临时变量的情况下交换两个数,即简洁又高效,在以后的编程中,我们可以尽可能的优化代码,做一名真正的程序猿。
不创建临时变量交换两个数,这才是高手相关推荐
- 不允许创建临时变量交换两个变量的内容
在学习C语言的时候,涉及到两个变量值的交换,其中用到临时变量.如果在没有临时变量的情况下,该如何做呢? 方法一:C语言提供的异或运算就可以实现这样的操作.异或运算符"^"也称&qu ...
- C语言异或交换两个数的原理解析-大厂面试题:不使用第三变量交换两个数的值
常用操作交换两个数的值 常用的交换两个数值的方法一般是采用第三个变量,这种方法简单易懂,用代码举例 int main() {//交换两个整形变量int a = 3;int b = 5;int c = ...
- 不用临时变量交换两个变量的值
在学习C语言的时候,涉及到两个变量值的交换,其中用到临时变量. 类似于: temp=a;a=b;b=temp; 这样的语句,如果在没有临时变量的情况下,该如何做呢? 网络上的人们给出了两种方法: 一. ...
- C++实现1.交换两个整形变量的内容.2.不创建临时变量的条件下,交换两个数的内容.3.求是个整数中的最大值.4.将三个数按从大到小输出.5.求两个数的最大公约数.
/ //给定两个整型变量的值,并交换他们的值 int main(){ int a = 10; int b = 20; int temp = a; //创建一个临时变量,来做交换值的中间媒介 a = b ...
- 不借助第三个变量交换两个整数
假设两个数x和y,则有: 方法1,算术运算(加减): x=x+y; //x暂存两数之和 y=x-y; //y为两数之和减去y,即原来的x x=x-y; //x为两数之和减去现在的y(原来的x), ...
- C语言不用临时变量交换a,b的值
现在有个题是: 要求不创建临时变量,来交换a,b的值,问有几种办法 首先先来一个创建临时变量交换的 int temp=0;temp=a;a=b;b=temp; 相信大家也都会,哈哈哈,就不多讲了 加减 ...
- 不允许创建临时变量,交换两个数的内容
不允许创建临时变量,交换两个数的内容 #include <stdio.h> int main(int argc, char *argv[]) { int a = 10, b = 100; ...
- 【C语言刷题】交换两个变量(包含不创建临时变量)的解法
目录 一.常规方法(引入空瓶变量) 二.题目要求,不允许创建临时变量 2.1 通过两数加法实现交换 2.2 按位异或操作符实现交换 题目:写代码实现两个变量的交换.(不允许创建临时变量) 一.常规方法 ...
- [笔试题]交换两个数不使用第三方变量 深入理解按位异或运算符
异或运算相当与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 = ...
最新文章
- archsummit2017见闻和思考
- iOS网络编程之同步、异步、请求队列
- UICollectionView实现的图片的多选效果(本人已封装好,简单操作)
- 孪生三兄弟 CycleGAN, DiscoGAN, DualGAN
- Apache Spark 的设计与实现(job逻辑执行图)
- PHP 实现随机字符串,可作为随机密码
- C#学习日志三(流程控制语句)
- 如何把即时通讯软件做大做强?
- 一周总结汇总_2016-09-18
- f2fs系列之二: 重要的数据结构
- 参加软件测试工程师面试前,这些内容你一定要准备
- 面试中的智力题及编程实践
- ValueError: Argument must be a dense tensor:... got shape [6, 60, 160, 3], but wanted [6].
- 希尔伯特(Hilbert)空间和巴拿赫(Banach)空间
- 全国省市区(县)级地名xml(一)
- springboot总结(一)
- matlab2015 colormap,matlab中colormap函数
- 体验论文新神器!AMiner人工智能工具,自动溯源论文来龙去脉
- 直方图均衡化(II)
- php jwt使用案例,PHP JWT基础知识及其简单示例