互换两个变量,不使用中间变量
来源:互联网 发布:java soap client 编辑:程序博客网 时间:2024/05/21 17:49
第一种方法:
a=a+b;
b=a-b;
a=a-b;
代码如下:
#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;
代码如下:
#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;}
写成宏替换的方法如下:
#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;}
- 互换两个变量,不使用中间变量
- 互换两个变量,不使用中间变量
- 互换两个变量,不使用中间变量
- 互换两个变量,不使用中间变量
- 互换两个变量,不使用中间变量
- 互换两个变量,不使用中间变量
- 互换两个变量,不使用中间变量
- 互换两个变量,不使用中间变量
- 互换两个变量,不使用中间变量
- 互换两个变量,不使用中间变量
- 互换两个变量,不使用中间变量
- PHP两个变量互换,不使用中间变量
- 不借助中间变量实现两个变量值得互换
- 不使用中间变量交换两个元素
- 不使用中间变量交换两个数
- 不使用中间变量交换两个数
- 不使用中间变量交换两个数
- 不使用中间变量交换两个数
- 02-audio和video标签
- 黑马程序员---集合
- Java 递归
- 协同软件开发培训第四天 7-13
- 使用JDBC连接数据库的标准代码
- 互换两个变量,不使用中间变量
- LXR安装(转)
- 黑马程序员---多线程
- (搬运)《算法导论》习题解答 Chapter 22.1-1(入度和出度)
- 关于socket
- 构造函数的初始化列表
- PAT_1002: A+B for Polynomials
- 黑马程序员---IO
- 何种情况下可以用对象名直接访问私有变量