交换两个数的值以及不使用临时变量交换两个数的值
2016-06-23 16:17
302 查看
使用临时变量非常简单
#include<stdio.h>
int main()
{
int a = 1, b = 2, c = 0;
printf("a=");
scanf("%d", &a);
printf("b=");
scanf("%d", &b);
c = a;
a = b;
b = c;
printf("a=%d,b=%d\n", a, b);
system("pause");
return 0;
}
这时候我考虑可不可以不加入临时变量而同样达到目的呢
可以采用加减的方法
#include<stdio.h>
int main()
{
int a = 1, b = 2;
printf("a=");
scanf("%d", &a);
printf("b=");
scanf("%d", &b);
a = a + b;
b = a - b;
a = a - b;
printf("a=%d,b=%d\n", a, b);
system("pause");
return 0;
}
以及异或的方法
#include<stdio.h>
int main()
{
int a = 1, b = 2;
printf("a=");
scanf("%d", &a);
printf("b=");
scanf("%d", &b);
a = a ^ b;//构建一个集合
b = a ^ b;//取出集合中的另一个数
a = a ^ b;//取出集合中的另一个数
printf("a=%d,b=%d\n", a, b);
system("pause");
return 0;
}
#include<stdio.h>
int main()
{
int a = 1, b = 2, c = 0;
printf("a=");
scanf("%d", &a);
printf("b=");
scanf("%d", &b);
c = a;
a = b;
b = c;
printf("a=%d,b=%d\n", a, b);
system("pause");
return 0;
}
这时候我考虑可不可以不加入临时变量而同样达到目的呢
可以采用加减的方法
#include<stdio.h>
int main()
{
int a = 1, b = 2;
printf("a=");
scanf("%d", &a);
printf("b=");
scanf("%d", &b);
a = a + b;
b = a - b;
a = a - b;
printf("a=%d,b=%d\n", a, b);
system("pause");
return 0;
}
以及异或的方法
#include<stdio.h>
int main()
{
int a = 1, b = 2;
printf("a=");
scanf("%d", &a);
printf("b=");
scanf("%d", &b);
a = a ^ b;//构建一个集合
b = a ^ b;//取出集合中的另一个数
a = a ^ b;//取出集合中的另一个数
printf("a=%d,b=%d\n", a, b);
system("pause");
return 0;
}
相关文章推荐
- 查找一串字符中有没有我想查找的字符
- 求一个数的二进制数中的1的个数
- 从标准输入读取几行输入。每行输入都要打印到标准输出上,前面加上行号。
- Android 文字倾斜
- 40个Java多线程问题总结
- iOS_APP打包上架流程
- java移位运算符(运算符)
- Android Studio教程--Android项目分享到Github
- POJ 1459 Power Network (最大流)
- 博客即简历
- 微信扫码支付模式二【无法回调】解决方案
- sqlserver查询数据的所有表名和行数
- 求n!
- IOS崩溃Crash分析(MTA腾讯云分析,友盟)
- 求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,例如:2+22+222+2222+22222
- 关于android控件drawableLeft图片大小控制
- 多线程、特别是NSOperation 和 GCD 的内部原理
- 粗浅记录Oracle RAC系统内存无法释放
- 粗浅记录Oracle RAC系统内存无法释放
- 粗浅记录Oracle RAC系统内存无法释放