算法设计-变量交换

变量交换

题目描述

    输入两个整数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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值