搜索
热搜: NOIP OIer 神牛
查看: 309|回复: 0

GET交换两个数的多种技能

[复制链接]

主题

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-1-22 11:14:57 | 显示全部楼层 |阅读模式
1、       定义临时变量,交换两个数
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
   int a,b;
   cin>>a>>b;
   printf("before swap a=%d,b=%d\n",a,b);
   int temp;
   temp=a;
   a=b;
   b=temp;
   printf("after swap a=%d,b=%d\n",a,b);
   return 0;
}
2、       不使用临时变量,直接使用加减法交换
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
   int a,b;
   cin>>a>>b;
   printf("before swap a=%d,b=%d\n",a,b);
   a=a+b;
   b=a-b;
   a=a-b;
   printf("after swap a=%d,b=%d\n",a,b);
   return 0;
}
3、不使用临时变量,直接使用异或运算。位运算是可逆的,比如 x^y=z
y^z=x
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
   int a,b;
   cin>>a>>b;
   printf("before swap a=%d,b=%d\n",a,b);
   a=a^b;
   b=a^b;
   a=a^b;
   printf("after swap a=%d,b=%d\n",a,b);
   return 0;
}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

津ICP备19006949号-1 | 津公网安备12010102000465号

快速回复 返回顶部 返回列表