互换两个变量,不使用中间变量
来源:互联网 发布:java哪些源码值得看 编辑:程序博客网 时间:2024/05/22 09:06
第一种方法:
a=a+b;
b=a-b;
a=a-b;
代码如下:
[cpp] view plain copy
- #include "stdio.h"
- int main(void)
- {
- int a,b;
- printf("请输入两个变量a和b:/n");
- scanf("%d %d",&a,&b);
- printf("a和b交换前:/n");
- printf("a=%d b=%d/n",a,b);
- a=a+b;
- b=a-b;
- a=a-b;
- printf("a和b交换后:/n");
- printf("a=%d b=%d/n",a,b);
- system("pause");
- return 0;
- }
缺点:可能越界
第二种方法:
解决方法:(a、b异或的结果 ,和a异或得b ,和b异或得a)
a=a^b;
b=a^b;
a=a^b;
代码如下:
[cpp] view plain copy
- #include "stdio.h"
- int main(void)
- {
- int a,b;
- printf("请输入两个变量a和b:/n");
- scanf("%d %d",&a,&b);
- printf("a和b交换前:/n");
- printf("a=%d b=%d/n",a,b);
- a=a^b;
- b=a^b;
- a=a^b;
- printf("a和b交换后:/n");
- printf("a=%d b=%d/n",a,b);
- system("pause");
- return 0;
- }
写成宏替换的方法如下:
[cpp] view plain copy
- #include "stdio.h"
- #define swap(a,b) (a)^=(b)^=(a)^=(b)
- int main(void)
- {
- int a,b;
- printf("请输入两个变量a和b:/n");
- scanf("%d %d",&a,&b);
- printf("a和b交换前:/n");
- printf("a=%d b=%d/n",a,b);
- swap(a,b);
- printf("a和b交换后:/n");
- printf("a=%d b=%d/n",a,b);
- system("pause");
- return 0;
- }
0 0
- 互换两个变量,不使用中间变量
- 互换两个变量,不使用中间变量
- 互换两个变量,不使用中间变量
- 互换两个变量,不使用中间变量
- 互换两个变量,不使用中间变量
- 互换两个变量,不使用中间变量
- 互换两个变量,不使用中间变量
- 互换两个变量,不使用中间变量
- 互换两个变量,不使用中间变量
- 互换两个变量,不使用中间变量
- 互换两个变量,不使用中间变量
- PHP两个变量互换,不使用中间变量
- 不借助中间变量实现两个变量值得互换
- 不使用中间变量交换两个元素
- 不使用中间变量交换两个数
- 不使用中间变量交换两个数
- 不使用中间变量交换两个数
- 不使用中间变量交换两个数
- iOS 删除线不显示问题 10.3以后
- 能上QQ却上不了网页
- Spring---AOP基本概念以及Advice5种类型的通知注解应用实例
- leetcode 461. Hamming Distance
- python安装配置Theano ImportError:cannot import name 'configparser'
- 互换两个变量,不使用中间变量
- POJ 3067
- JS原型设计模式(二)
- pdf 转 word
- mysql索引知识
- Android http Post 传文件
- 【linux】Makefile 基本知识
- 获取本机系统时间
- 我的算法14