互换两个变量,不使用中间变量
来源:互联网 发布:玻璃优化软件破解版 编辑:程序博客网 时间:2024/05/21 17:21
第一种方法:
a=a+b;
b=a-b;
a=a-b;
代码如下:
[cpp] view plaincopy
- #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 plaincopy
- #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 plaincopy
- #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两个变量互换,不使用中间变量
- 不借助中间变量实现两个变量值得互换
- 不使用中间变量交换两个元素
- 不使用中间变量交换两个数
- 不使用中间变量交换两个数
- 不使用中间变量交换两个数
- 不使用中间变量交换两个数
- Rotate List
- 行内元素与块级元素比较全面的区别和转换
- Convert Sorted Array to Binary Search Tree
- Mongo使用
- 《javascript设计模式》读书笔记二(封装和隐藏信息)
- 互换两个变量,不使用中间变量
- 2015届毕业生的找工作记录
- 杨辉三角
- Android:自定义Button
- POJ 3469 最大流
- 列的软件包有不能满足的依赖关系:libgnomeprint2.2-dev: 依赖: libpango1.0-dev 但是它将不会被安装
- 文件的输入输出 C++
- linux fork用法
- 使用CKEditor编辑器进行文本编辑