2064【例2.1】交换值-顺序结构程序设计-c++语言

本羊羔迈着自信的步伐来了~

我只想对流量说一句话:你礼貌吗???????!!!!!

羊羔写的文章难道很差吗,阅读量小于2……

我表示不服,有本事给我来一个上500的流量(ಥ﹏ಥ)


目录

原题再现

2064:【例2.1】交换值

【题目描述】

【输入】

【输出】

【输入样例】

【输出样例】

分析题意

错误解法

方法一

方法二

方法三(不建议使用)

代码呈现

方法一

方法二

方法三

致我的朋友(路人建议跳过不看)

class is over


原题再现

2064:【例2.1】交换值


时间限制: 1000 ms         内存限制: 65536 KB
提交数: 53134     通过数: 29031

【题目描述】

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

【输入】

输入两个正整数a和b。

【输出】

输出a与b交换值后的结果。

【输入样例】

2 3

【输出样例】

3 2

分析题意

这道题本身很简单,但有很多人会走入这样的误区:

        先定义两个变量a和b,输入后再a=b,b=a,最后再输出不就完了?

漏!大漏特漏!

你们想啊,把b赋值给a,那么现在a的值不就是b了?再把a赋值给b,那么b的值还是没变?


错误解法

本羊羔再图文并茂解释一下:

1.有两个箱子,分别是A和B,表示两个变量

 2.分别再这两个箱子里装东西,为了方便,我把红色放入A,把蓝色放入B,这就是输入的过程

3.这时,我们把B里的东西给A ,实现了赋值的过程:a=b

4.现在我们又把a的东西给b,实现了赋值过程b=a

可最后B的值没有变,交换失败了。


方法一

但是,如果我们在建立一个变量,记录a变量原来的值,再赋值给b变量,不就好了?

这时,方法一就诞生了,本羊羔在用图来解释:

1.同样是A箱子和B箱子,代表两个变量,里面分别是红色与蓝色

2.这次,我们不着急交换,先新创建一个盒子,里面什么也没有,相当于又建立了一个变量

3.咱们把A的值赋值给C,再进行原来的交换步骤

 

 

4.现在C的值就是原来A的值,我们把它赋值给B

5.现在A和B的值就交换成功啦!


方法二

这个方法是不是特别的巧妙?用代码呈现也很简单,主要是理解。

但是,还有更简单的方法!

那就是方法二:交换函数swap,你把两个变量放在这个函数的小括号里,就可以把它们的值交换

头文件:#include<algorithm>


方法三(不建议使用)

你说,方法一、方法二都有了,还会不会又方法三?

没错,你猜对了,的确有方法三,不过本羊羔并不建议你使用

因为题目里说,输入a和b,要输出它们交换的值

它们交换的值,就是b和a,所以你可以先输出b再输出a,一样能通过

友情提示:这是一个道练习题,不是考试,所以千万别耍小聪明哦~


今天的分析有些长,不过 相信你已经听懂了,快去敲代码吧!

颇有余力的同学可以吧三个方法都敲出来,并且提交哦~


代码呈现

分析长,代码简单,本羊羔要去吃草了,就不在上面加注释了


方法一

#include<iostream>
using namespace std;

int main()
{
    int a,b;
    cin>>a>>b;
    int c=a;
    a=b;
    b=c;
    cout<<a<<" "<<b;
    return 0;


方法二

#include<iostream>
#include<algorithm>
using namespace std;

int main()
{
    int a,b;
    cin>>a>>b;
    swap(a,b);
    cout<<a<<" "<<b;
    return 0;


方法三

#include<iostream>
using namespace std;

int main()
{
	int a,b;
	cin>>a>>b;
	cout<<b<<" "<<a;
	return 0;
}

致我的朋友(路人建议跳过不看)

“您”好

非常感谢“您”,恭喜“您”的代码把我们学校机房的电脑弄得“一愣一愣”的,差一点就原地逝去。

“您”是谁,我就不说了,我在csdn一共就那么两三个朋友,请自行斟酌……

感谢“您”的馈赠!


class is over!

哈哈,本羊羔讲得怎么样?

制作不易,再见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值