HM029 三目左右值

HM029 三目左右值

HM029 三目左右值

来源: 第 29 集 程序流程结构-选择结构案例-三目运算符

难度: 入门

时间限制: 1s

空间限制: 64MB

题目描述

三目运算符由问号和冒号拼成三个表达式:表达式1 ? 表达式2 : 表达式3。它和 if else 同一套逻辑——表达式 1 为真就取表达式 2,否则取表达式 3。比较时用严格大于:只有 a > b 成立才走左侧,相等时走右侧。

在 C++ 里,三目运算符返回的是**变量本身**,因此有两种用法:

  1. 右值:把算出来的结果赋给另一个变量,例如把 \(a\)、\(b\) 中较大的那个赋给 \(peak\):peak = (a > b ? a : b)。等号右边建议加括号,避免和赋值抢优先级。
  2. 左值:继续写在赋值号左边,把新值写进被选中的那个变量,例如 (a > b ? a : b) = x

读入整数 \(a\)、\(b\)、\(x\)、\(y\),按下面三步处理(必须用三目来选择要读、要写的变量):

  1. 用三目把 \(a\)、\(b\) 的较大值赋给 \(peak\)(相等则取 \(b\))。
  2. 把 \(x\) 赋给当前较大的变量:(a > b ? a : b) = x
  3. 把 \(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
通过率
?
上传者