题解:B4418 [语言月赛 202510] 选择题
本题考查分支结构的几个常见应用,代码比较综合。
首先要判断 A,B,C 中有无重复选项,换言之,只要 || 来表示“或者”。
然后依次判断:
- 如果
d=a ,那么输出 A。 - 否则如果
d=b ,那么输出 B。 - 否则如果
d=c ,那么输出 C。
如果上述三种情况都不符合要求,那么接着看“中庸之道”。
要判断第二大的数字是谁,有比较多的思路:
方法一:
如果
在 C++ 中,可以使用 ^ 来表示“两者恰好满足其一”,例如 (a<b) ^ (a<c)。但是读者需要注意,^ 的本意是按位异或而非逻辑异或,所以只有 ^ 两侧都是 bool 类型的值时才会符合预期。
当然,可以利用 bool 转化成 int 的方法,使用 (a<b) + (a<c) == 1 来表示。
方法二:
先计算出第二大的数,然后依次判断
具体地,第二大的数等于三个数字的和,减去最大数再减去最小数。三个数的最大数可以通过 max(a,max(b,c)) 来得到,当然,在更新的(C++ 11 及以上)语言版本中,可以直接写 max({a,b,c})。
把这个数记为