2064:【例2.1】交换值 题解

题目链接

题目描述

输入两个正整数\(a\)\(b\),试交换\(a\)\(b\)的值(使\(a\)的值等于\(b\)\(b\)的值等于\(a\))。

解题思路

该题有很多种方法,例如:

  • 直接输出\(b\)\(a\)(偷鸡方法)
  • 使用algorithm库的swap函数
  • 使用额外变量辅助
  • 位运算
  • \(......\)
    但这道题目放在"运算符和表达式"这一章,显然是有出题者的用意,这里比较适合初学者的只有"使用额外变量辅助"这种解。
    假设我们现在有三个变量:\(a=12\)\(b=21\)\(tmp\)
  1. 先将\(a\)赋值给\(tmp\),此时三个变量值如下:
    \(a=12\)\(b=21\)\(tmp=12\)
  2. 再将\(b\)的值赋给\(a\),此时三个变量值如下:
    \(a=21\)\(b=21\)\(tmp=12\)
  3. 再将\(tmp\)的值赋给\(b\),此时三个变量值如下:
    \(a=21\)\(b=12\)\(tmp=12\)
    这样,我们用\(tmp\)保留\(a\)的值,十分巧妙地交换了\(a\)\(b\)的值,输出即可。

AC Code

#include<bits/stdc++.h>
using namespace std;
int main()
{
    ios::sync_with_stdio(0),cin.tie(nullptr),cout.tie(nullptr);
    int a,b,tmp;
    cin>>a>>b;
    tmp=a;
    a=b;
    b=tmp;
    cout<<a<<" "<<b;
    return 0;
}

Tip

tmp=a;
a=b;
b=tmp;

这三句可直接用swap(a,b)代替,记得包含algorithm!!!

posted @ 2024-07-20 15:53  Firra3500  阅读(14)  评论(0编辑  收藏  举报