变量交换
题目描述
输入两个整数a和b,交换二者的值,然后输出。
样例输入
824 16
样例输出
16 824
题目分析:按照题目所说,先把输入存入变量a和b,然后进行交换。
解法一:交换输入
简单直接的通过更换变量的输出顺序从而完成题目要求。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a,b,t;
scanf("%d%d", &a,&b);
printf("%d %d", b, a);
return 0;
}
解法二:三变量法
这种方法通过一个中间变量t作为变量交换的缓存,先将a变量的值存入变量t中,然后再将变量b 的值覆盖到变量a中,再将变量t的值存入a中,从而完成变量交换。
这种方法可以形象地比喻成将一瓶酱油和一瓶醋借助一个空瓶子进行交换:先把酱油倒入空瓶,然后将醋倒进原来的酱油瓶中,最后把酱油从辅助的空瓶中倒入原来的醋瓶子里。
三变量法是进行变量交换使用最为广泛的算法。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a,b,t;
scanf("%d%d", &a,&b);
t = a;
a = b;
b = t;
printf("%d %d", a,b);
return 0;
}
解法三:两变量计算法
假定用户输入的是a0和b0,因此scanf语句执行完后a=a0,b=b0。
执行完a=a+b后:a=a0+b0, b=b0
执行完b=a-b后:a=a0+b0, b=a0
执行完a=a-b后:a=b0, b=a0
这种方法看起来很好,只是用了两个变量,但实际上很少使用,因为它的适用范围很窄:只有定义了加减法的数据类型才能采用此方法。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a,b,t;
scanf("%d%d", &a,&b);
a = a + b;
b = a - b;
a = a - b;
printf("%d %d", b, a);
return 0;
}