BCSP-X · 2024 BCSP-X 上半年活动基础知识测评(小学低年级组) 第 3 题

选择题 · 答案 D

← 整套速查表 BCSP-X 全部真题

题目

出租车的计费规则是:当行驶距离小于 $3$ 公里时,按照起步价 $13$ 元收取;大于 $3$ 公里时,每多出 $1$ 公里额外收费 $2$ 元。假设行驶距离总是整数,单位是公里,用变量 $x$ 表示($x > 0$),以下哪个 C++ 的表达式能够计算出打车的费用:

答案:D

解题思维

这题考的是条件分支逻辑和运算符优先级。拿到题先别急着算,看清楚题目给的计费规则:3公里内13元,超过3公里每公里2元。关键是理解题目要求的是‘表达式’,也就是要写出一个能根据x的值自动算出费用的代码片段,而不是手动分段写if语句。

常见错误

最容易掉进的坑是忽略题目隐含的‘整数公里’这个前提,导致对x<3的情况处理不当;其次是运算符优先级混乱,比如把13+(x-3)*2写成(13+x-3)*2,结果完全不对;还有很多人看到选项C和D长得差不多,就凭直觉选C,却忘了题目里明确说了x>0且是整数,当x=1或2时,C选项会算出11元(13-2),这显然违背了‘起步价13元’的规则,而D选项在x<3时直接返回13,才是对的。

详细解析(节选)

这道题考查的是C++中的三元运算符(条件表达式)以及基本的算术运算优先级。命题人喜欢在这种基础题里挖‘细节坑’:比如x<3时费用就是起步价13,而x>3时才是13+(x-3)*2。很多学生一看到公式就机械地套,忽略了x<3的情况,或者在写表达式时把条件写反了。

我们逐个看选项: A选项13 + (x - 3) * 2,当x=1时,算出来是13-4=9,这显然不对,起步价都是13元,不可能越坐越便宜。 B选项13 * (x - 3) + x % 3,这个表达式完全不符合计费规则,x=3时结果是0,x=4时结果是13,逻辑全乱。 C选项x < 3 ? 13 + (x - 3) * 2 : 13,这里条件写反了!它的意思是‘如果x小于3,就按超过3公里的算法算;否则按13元算’。当x=1时,它会执行13+(1-3)*2=9,错误。 D选项x > 3 ? 13 + (x - 3) * 2 : 13,这才是正确的逻辑:当x大于3时,用起步价加上超出部分的费用;当x小于等于3时,直接返回13。题目明确说了行驶距离是整数且x>0,所以x<3的情况(即1或2公里)都应该按13元收,D选项完美覆盖了所有情况。

思考心法:遇到这种分段计费题,第一步是确认分段点(这里是3公里);第二步是分别写出两段对应的公式;第三步是把这两个分支用三元运算符串联起来,注意‘真’分支对应‘大于’还是‘小于’,千万别写反。最后一定要代入几个边界值(比如x=1,2,3,4)验算一下,确保没有逻辑漏洞。

避坑提醒:C选项和D选项只有两个符号的区别(<和>),考试时很容易看花眼。记住,题目说‘大于3公里时额外收费’,所以‘大于’对应的是那个复杂的公式,‘小于等于’对应的是起步价。写反了就全错。

从考频趋势看,BCSP-X近年在C++基础语法(特别是三元运算符和运算符优先级)这类选择题上保持高频出现,几乎每年都有1-2道类似题目。这类题通常不会太复杂,核心就是考察你是否真正理解‘条件分支’的概念,而不是死记硬背公式。未来可能继续以单选题形式出现,或者稍微增加一点干扰项(比如加入整数除法的优先级陷阱),但基本逻辑不会大变。暂无足够依据预测具体年份的题型变化,但可以肯定的是,只要把条件表达式和优先级吃透,这类题就是送分题。

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断