HM091 三种传参交换对比

HM091 三种传参交换对比

HM091 三种传参交换对比

来源: 第 91 集 C++中的引用-引用做函数参数

难度: 入门

时间限制: 1s

空间限制: 64MB

题目描述

函数传参常见有三种方式,用交换两个整数来对比:

  1. 值传递 void swapByValue(int a, int b):形参是实参的一份拷贝。函数里交换成功,实参不变。
  2. 地址传递 void swapByPointer(int *a, int *b):传入 &x&y,函数里写 *a*b。形参会改到实参。
  3. 引用传递 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
通过率
?
上传者