24 条题解
-
0
好的,同学!这道题是一道非常基础的算术表达式求值题,它在考察我们对 C++ 运算符优先级 和 整数除法 这两个基本概念的掌握情况。我们一起来算一下。
9. 表达式
(4 * (11 + 12) / 4)的计算结果为 ()。- A. 47
- B. 20
- C. 23
- D. 56
启发式讲解
我们来当一次“人体计算机”,严格按照 C++ 的运算规则来一步步执行这个表达式。
第一步:括号优先
- 在任何编程语言和数学中,括号
()的优先级都是最高的。如果有多层括号,就从最里面的一层开始算。 - 我们看到
(11 + 12)在最里面,所以先算它:11 + 12 = 23
- 现在,表达式变成了
(4 * 23 / 4)。
第二步:同级运算,从左到右
-
现在括号里只剩下
*(乘法) 和/(除法) 这两个运算符。 -
教练提醒:
*和/的优先级是相同的。当它们在一起时,我们遵循“从左到右”的计算顺序。 -
我们先算左边的
4 * 23:4 * 23 = 92
-
现在,表达式变成了
(92 / 4)。
第三步:最后的计算
-
现在只剩下最后一步除法了。
92 / 4 = 23
-
关于整数除法: 在这道题里,所有的数字都是整数 (
int)。92刚好可以被4整除,所以这里不涉及小数截断的问题。但如果题目是(4 * (11 + 12) / 5),那么92 / 5的结果会是18(因为18.4的小数部分会被砍掉),这一点要特别注意!
另辟蹊径(数学思维): 学过一点数学的同学可能一眼就看出来了,
4 * ... / 4,这个* 4和/ 4可以直接抵消掉。所以表达式(4 * (11 + 12) / 4)其实就等价于(11 + 12),结果直接就是23。在编程中,只要不涉及精度问题和溢出问题,这种数学上的化简同样适用!结论
无论通过哪种方式,我们都得到了相同的结果。
最终的计算结果是 23。
正确答案是 C. 23
信息
- ID
- 4778
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 2
- 已通过
- 1
- 上传者