一般来说,要实现两个变量之间的交换,都会借助一个中间变量(第三个变量),如:
include<iostream>
using namespace std;
int main()
{
int a,b,c;
cin>>a>>b;
c=a;
a=b;
b=c;
cout<<a<<" "<<b<<endl;
return 0;
}
那有没有不使用中间变量的方法呢?答案是肯定的!
#include<iostream>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
a=a+b;
b=a-b;
a=a-b;
cout<<a<<" "<<b<<endl;
return 0;
}
上述有三行代码要说明一下(下面的说明来自《算法竞赛入门经典》)
a=a+b
b=a-b
a=a-b
为了避免值和变量名混淆,假定用户输入的是X和Y,因此
cin语句执行完后, a=X,b=Y
执行完a=a+b后, a=X+Y,b=Y
执行完b=a-b后, a=X+Y,b=X
执行完a=a-b后, a=Y,b=X