HM091 三种传参交换对比
HM091 三种传参交换对比
来源: 第 91 集 C++中的引用-引用做函数参数
难度: 入门
时间限制: 1s
空间限制: 64MB
题目描述
函数传参常见有三种方式,用交换两个整数来对比:
- 值传递
void swapByValue(int a, int b):形参是实参的一份拷贝。函数里交换成功,实参不变。 - 地址传递
void swapByPointer(int *a, int *b):传入&x、&y,函数里写*a、*b。形参会改到实参。 - 引用传递
void swapByReference(int &a, int &b):形参是实参的别名。函数体写法与值传递一样(不用*),调用时也直接传变量名。形参同样会改到实参。
引用传递和地址传递效果相同,都能让形参修饰实参;引用的语法更简单,可以少写指针和解引用。别名和原名可以叫同一个名字。
对每组数据按指定方式交换一次,输出交换后的**实参**。必须分别实现三个函数,不能只在 main 里手写一次交换应付三种方式。
输入格式
第一行一个整数 \(q\)(\(1 \le q \le 100\))。
接下来 \(q\) 行,每行三个整数 \(a\)、\(b\)、\(m\)(\(-10^9 \le a,b \le 10^9\),\(1 \le m \le 3\))。\(m=1\) 值传递,\(m=2\) 地址传递,\(m=3\) 引用传递。
输出格式
共 \(q\) 行,每行两个整数,表示该组交换后的实参 \(a\)、\(b\),中间一个空格。行末换行。
样例
输入 #1
3
10 20 1
10 20 2
10 20 3
输出 #1
10 20
20 10
20 10
输入 #2
1
7 7 3
输出 #2
7 7
说明
样例 1 同一对 \(10\ 20\):值传递后实参仍是 \(10\ 20\);指针和引用都会换成 \(20\ 10\)。引用版函数体里写 temp = a; a = b; b = temp; 即可,不要再对形参取 *。
信息
- ID
- 1090
- 难度
- (无)
- 分类
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 通过率
- ?
- 上传者