Files

2.8 KiB
Raw Blame History

C++ 逻辑运算符 课后习题 - 答案

一、 填空题

  1. && , || , !
  2. 全真才为真
  3. 一真即为真
  4. false , true
  5. 短路求值 (或 短路)
  6. ! (非) , && (与) , || (或)
  7. 算 关 与

二、 单项选择题

  1. D. (5 > 3) 为 true,(2 < 1) 为 false。true && false 的结果是 false,输出为 0。
  2. A. (10 == 9) 为 false,(3 != 4) 为 true。false || true 的结果是 true,输出为 1。
  3. B. -1 是非零数,被视为 true。!true 的结果是 false,即 0。
  4. C. 题干描述了两个并列的条件,应该用 || 连接。“能被4整除但不能被100整除”是 year % 4 == 0 && year % 100 != 0,“能被400整除”是 year % 400 == 0。
  5. B. a 是 1 (true),b 是 0 (false)。true || false 的结果是 true,输出为 1。
  6. A. 因为 x > 1 (即 5 > 1) 的结果是 true,根据 || 的短路规则,后面的 (y++ > 10) 不会再执行,所以 y 的值保持 10 不变。
  7. A. 因为 x > 1 (即 0 > 1) 的结果是 false,根据 && 的短路规则,后面的 (y++ > 10) 不会再执行,所以 y 的值保持 10 不变。
  8. D. 一个数要么大于等于20,要么小于20,这两个条件覆盖了所有情况,所以用 || 连接起来结果永远为 true。
  9. B. ! 优先级最高,!true 变为 false。表达式变为 false || false && true。&& 优先级高于 ||,先算 false && true 结果为 false。最后表达式变为 false || false,结果为 false,即 0。
  10. D. a > 1 (true) && a < 10 (false),true && false 结果为 false。其他选项结果都为 true。

三、 判断题

  1. √ ( && 的优先级高于 ||,就像乘法高于加法一样。)
  2. √ (当 a 为0时,!a 为 true,a == 0 也为 true。当 a 非0时,!a 为 false,a == 0 也为 false。)
  3. × (它会先算 5 < x,结果是 true(1) 或 false(0),然后再拿这个 1 或 0 去和 10 比较,永远为 true。正确的写法是 x > 5 && x < 10。)
  4. × (关系运算符的优先级高于逻辑运算符。先判断大小关系,再进行逻辑组合。)
  5. × (这是 || 的短路特性,只要 A 为 true,整个表达式就确定为 true,无需再计算 B。)
  6. √ (a > b 即 1 > 2 为 false。c > b 即 3 > 2 为 true。false || true 结果为 true,输出 1。)
  7. × (a 是 0,即 false。对于 && 运算,因为短路,b++ 不会执行,b 的值仍然是 10。)
  8. √ (0 被视为 false,!false 的结果是 true,即 1。)
  9. √ (true && false 的结果是 false,cout 输出 bool 类型的 false 时会显示 0。)
  10. √ (这正是逻辑或 || 的定义。)