【题目描述】
输入两个正整数a和b,试交换a、b的值(使a的值等于b,b的值等于a)。
【输入】
输入两个正整数a和b。
【输出】
输出a与b交换值后的结果。
【输入样例】
2 3
【输出样例】
3 2
【程序分析】
经典例题:交换两个变量
考察方法的灵活性,要求可以用多种方法求解
【程序代码】
方法一:临时变量(三变量法)
#include <iostream> // 包含输入输出流头文件
using namespace std; // 使用标准命名空间
int main() // 主函数
{
int a, b; // 定义两个整型变量
cout << "请输入两个整数: "; // 提示用户输入
cin >> a >> b; // 读取输入的两个整数
cout << "交换前: a = " << a << ", b = " << b << endl; // 显示交换前的值
// 方法一:使用临时变量交换(最常用)
int temp = a; // 创建临时变量temp,保存a的值
a = b; // 将b的值赋给a
b = temp; // 将temp中保存的原a值赋给b
cout << "交换后: a = " << a << ", b = " << b << endl; // 显示交换后的值
return 0; // 程序正常结束
}
方法二:算术运算
#include <iostream>
using namespace std;
int main()
{
int a, b;
cout << "请输入两个整数: ";
cin >> a >> b;
cout << "交换前: a = " << a << ", b = " << b << endl;
// 算术运算交换(注意可能溢出)
a = a + b; // a变为两数之和
b = a - b; // b得到原a的值(和减去b等于a)
a = a - b; // a得到原b的值(和减去新b等于原b)
cout << "交换后: a = " << a << ", b = " << b << endl;
return 0;
}
方法三:异或运算
#include <iostream>
using namespace std;
int main()
{
int a, b;
cout << "请输入两个整数: ";
cin >> a >> b;
cout << "交换前: a = " << a << ", b = " << b << endl;
// 异或运算交换(不会溢出)
a = a ^ b; // a变为a和b的异或值
b = a ^ b; // b得到原a的值
a = a ^ b; // a得到原b的值
cout << "交换后: a = " << a << ", b = " << b << endl;
return 0;
}
方法四:用swap函数
#include <iostream>
#include <algorithm> // 包含algorithm头文件,提供swap函数
using namespace std;
int main()
{
int a, b;
cout << "请输入两个整数: ";
cin >> a >> b;
cout << "交换前: a = " << a << ", b = " << b << endl;
swap(a, b); // 使用标准库的swap函数交换
cout << "交换后: a = " << a << ", b = " << b << endl;
return 0;
}
方法五:直接交换输出
#include <iostream>
using namespace std;
int main()
{
int a, b;
cout << "请输入两个整数: ";
cin >> a >> b;
cout << "交换前: a = " << a << ", b = " << b << endl;
cout << "交换后: a = " << b << ", b = " << a << endl;
return 0;
}
推荐使用:
- 方法一(临时变量):最直观,适用于所有数据类型
- 方法四(swap函数):最简洁,C++标准推荐方式
- 方法三(异或运算):不需要额外空间,但只适用于整数类型

被折叠的 条评论
为什么被折叠?



