2.8 KiB
2.8 KiB
C++ 逻辑运算符 课后习题 - 答案
一、 填空题
&&,||,!- 全真才为真
- 一真即为真
false,true- 短路求值 (或 短路)
!(非) ,&&(与) ,||(或)- 算 关 与
二、 单项选择题
- D.
(5 > 3)为true,(2 < 1)为false。true && false的结果是false,输出为0。 - A.
(10 == 9)为false,(3 != 4)为true。false || true的结果是true,输出为1。 - B.
-1是非零数,被视为true。!true的结果是false,即0。 - C. 题干描述了两个并列的条件,应该用
||连接。“能被4整除但不能被100整除”是year % 4 == 0 && year % 100 != 0,“能被400整除”是year % 400 == 0。 - B.
a是1(true),b是0(false)。true || false的结果是true,输出为1。 - A. 因为
x > 1(即5 > 1) 的结果是true,根据||的短路规则,后面的(y++ > 10)不会再执行,所以y的值保持10不变。 - A. 因为
x > 1(即0 > 1) 的结果是false,根据&&的短路规则,后面的(y++ > 10)不会再执行,所以y的值保持10不变。 - D. 一个数要么大于等于20,要么小于20,这两个条件覆盖了所有情况,所以用
||连接起来结果永远为true。 - B.
!优先级最高,!true变为false。表达式变为false || false && true。&&优先级高于||,先算false && true结果为false。最后表达式变为false || false,结果为false,即0。 - D.
a > 1(true)&&a < 10(false),true && false结果为false。其他选项结果都为true。
三、 判断题
- √ (
&&的优先级高于||,就像乘法高于加法一样。) - √ (当
a为0时,!a为true,a == 0也为true。当a非0时,!a为false,a == 0也为false。) - × (它会先算
5 < x,结果是true(1) 或false(0),然后再拿这个1或0去和10比较,永远为true。正确的写法是x > 5 && x < 10。) - × (关系运算符的优先级高于逻辑运算符。先判断大小关系,再进行逻辑组合。)
- × (这是
||的短路特性,只要A为true,整个表达式就确定为true,无需再计算B。) - √ (
a > b即1 > 2为false。c > b即3 > 2为true。false || true结果为true,输出1。) - × (
a是0,即false。对于&&运算,因为短路,b++不会执行,b的值仍然是10。) - √ (
0被视为false,!false的结果是true,即1。) - √ (
true && false的结果是false,cout输出bool类型的false时会显示0。) - √ (这正是逻辑或
||的定义。)