HM029 三目左右值
HM029 三目左右值
来源: 第 29 集 程序流程结构-选择结构案例-三目运算符
难度: 入门
时间限制: 1s
空间限制: 64MB
题目描述
三目运算符由问号和冒号拼成三个表达式:表达式1 ? 表达式2 : 表达式3。它和 if else 同一套逻辑——表达式 1 为真就取表达式 2,否则取表达式 3。比较时用严格大于:只有 a > b 成立才走左侧,相等时走右侧。
在 C++ 里,三目运算符返回的是**变量本身**,因此有两种用法:
- 右值:把算出来的结果赋给另一个变量,例如把 \(a\)、\(b\) 中较大的那个赋给 \(peak\):
peak = (a > b ? a : b)。等号右边建议加括号,避免和赋值抢优先级。 - 左值:继续写在赋值号左边,把新值写进被选中的那个变量,例如
(a > b ? a : b) = x。
读入整数 \(a\)、\(b\)、\(x\)、\(y\),按下面三步处理(必须用三目来选择要读、要写的变量):
- 用三目把 \(a\)、\(b\) 的较大值赋给 \(peak\)(相等则取 \(b\))。
- 把 \(x\) 赋给当前较大的变量:
(a > b ? a : b) = x。 - 把 \(y\) 赋给当前较小的变量:
(a < b ? a : b) = y;若此时 \(a = b\),条件为假,赋给 \(b\)。
先输出 \(peak\),再输出更新后的 \(a\) 和 \(b\)。
输入格式
一行四个整数 \(a\)、\(b\)、\(x\)、\(y\)(\(-10^9 \le a,b,x,y \le 10^9\))。
输出格式
第一行一个整数,即 \(peak\)。
第二行两个整数,用一个空格分隔,即更新后的 \(a\) 和 \(b\)。行末换行。
样例
输入 #1
10 20 100 7
输出 #1
20
7 100
输入 #2
15 8 3 9
输出 #2
15
9 8
说明
样例 1:\(10 > 20\) 为假,\(peak=20\);再把 \(100\) 写入较大者 \(b\);此时 \(a < b\),把 \(7\) 写入较小者 \(a\)。
样例 2:\(15 > 8\),\(peak=15\),先把 \(3\) 写入 \(a\),得到 \(a=3,b=8\);再把 \(9\) 写入较小者 \(a\),得到 \(9\ 8\)。
相等时右侧生效:5 5 8 2 的 \(peak\) 为 \(5\),第二步改 \(b\) 得到 \(5\ 8\),第三步 \(a < b\),改 \(a\) 得到 \(2\ 8\)。
信息
- ID
- 1028
- 难度
- (无)
- 分类
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 通过率
- ?
- 上传者