本羊羔迈着自信的步伐来了~
我只想对流量说一句话:你礼貌吗???????!!!!!
羊羔写的文章难道很差吗,阅读量小于2……
我表示不服,有本事给我来一个上500的流量(ಥ﹏ಥ)
目录
原题再现
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!
哈哈,本羊羔讲得怎么样?
制作不易,再见!