4401: 【例7-5】交换两个变量的值
内存限制:128 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:24
解决:12
题目描述
输入两个整数变量a和b,设计一个交换函数将其交换后再输出。注意:不能直接输出b和a。
样例输入 复制
1 2
样例输出 复制
2 1
提示
#include<bits/stdc++.h> using namespace std; void swap(int x,int y) { int t=x; x=y; y=t; } int main(){ int a,b; cin>>a>>b; swap(a,b); cout<<a<<" "<<b<<endl; return 0; }
经过测试,发现完全不起作用!这是因为在swap()函数中,x和y都是局部变量,所以怎么变都不会影响到外面了。经过改正的函数如下:
#include<bits/stdc++.h> using namespace std; void swap(int &x,int &y) { int t=x; x=y; y=x; } int main(){ int a,b; cin>>a>>b; swap(a,b); cout<<a<<" "<<b<<endl; return 0; }
在参数的变量名前面加上一个&符号,代表引用传参,相当于告诉swap()函数a和b这两个碗放在了什么地方,而不是直接把食材丢入机器中。如果这样,x就是a的别名,y就是b的别名,修改x和y的值,就会影响到a和b。
回想一下 scanf()函数,比如 scanf(“%d”,&n),这里加上&是一样的道理。将变量n的地址告诉给这个函数,这样才能让输入函数直到将读到的数据放入那个碗里。