信息学奥赛-逻辑运算

【学习内容】

1、逻辑运算概念介绍
非:not ¬ 与:and ∧ 或:or ∨ 异或:xor ⊕
2、运算规则
AVB:两个命题中至少有一个真命题时,其复合命题为真。
A∧ B:两个命题必须全为真命题,其复合命题才是真命题。
¬ A:将原命题取反。
A⊕ B:两个命题一真一假时复合命题为真。
3、运算级比较
括号 > 非 > 与 > 或、异或 ( or和xor是同级的)
如果加入加减乘除,就是以下这样:
在这里插入图片描述
注意:同级的运算符不分高低,计算时按照从左到右运算。
5、德.摩根定律

4、例题
例题1.若A=True,B=False,C=True,D=False,以下逻辑运算表达式真的有( )。
A.(A∧B)∨(C∧D ∨¬A) B.((¬A ∧ B)∨ C)∧ ¬B
C.(B∨C∨D)∨D∧A D.A ∧(D ∨¬C)∧B

题解:一个个算结果。
A选项(A∧B)∨(C∧D ∨ ¬A) ,根据运算级的比较,我们可以定下运算的顺序,然后按运算顺序计算结果。注意,这类题是有个小技巧的。比如A选项可以先看中间的∨,为什么呢?因为∨的左右有一边是真就行,可以不去看另外一边。A选项的结果是:(A∧B)∨(C∧D ∨¬A),(A∧B)=假,(C∧D ∨¬A)中C∧D =假,¬A=假,所以(C∧D ∨¬A)=假。于是A选项可以简写为:假∨(假 ∨假)= 假。
B选项的结果是:((¬A ∧ B)∨ C)∧¬B,如果¬B是假那么就可以不去看前面的((¬A ∧ B)∨ C),可惜的是¬B是真,那么就要看((¬A ∧ B)∨ C),发现C是真,所以不看(¬A ∧ B),于是B选项可以简写为:(?∨ 真)∧ 真 = 真。
C选项的结果是:(B∨C∨D)∨D∧A ,D∧A=假,所以不得不看前面部分(B∨C∨D),只要BCD有一个是真,那么(B∨C∨D)=真,而容易发现C=true。所以C选项可以简写为:真 ∨ 假 = 真。
D选项的结果是:A ∧(D ∨¬C)∧B,我们很容易发现D选项的特殊结构为 ?∧?∧?,三个?有一个是假,那么D为假,A和B不用计算便可看出,所以先发现B=假,所以D=假。

例题2.计算23 +2 or 2 and 5 * 3 - 6 xor 5=( )。

题解:数字也有逻辑运算,当然也可以混合加减乘除。
这里举例说明运算的操作:
and:22 and 5
22: 10110 10110
5: 101 (缺位补零) 00101
(垂直对应两位and运算) 00100 = 4 or:22 or 5
22: 10110 10110
5: 101 (缺位补零) 00101
(垂直对应两位o r运算) 00100 = 4

【初赛练习】

计算下列逻辑表达式:
1、P∨┓P = ( )
2、A=True,B=False,C=True,D=False, A∧B∨C∧ D = ( )
3、A=True,B=False,C=True,D=False,A∧B∨C∧D ∨¬A = ( )
4、23 +2 or (2 and 5 * 3 - 6) xor 5 = ( )
5、2 and 7 xor 8 and 15 ÷ 3 + 6 xor 5 = ( )
6、(23 + 13 or 11) and 5 * (19 - 6 xor 5) = ( )

【历年题目】

2010提高(同2010普及)
3.以下逻辑表达式的值恒为真的是( )。
A.P∨(┓P∧Q)∨(┓P∧┓Q)
B.Q∨(┓P∧Q)∨(P∧┓Q)
C.P∨Q∨(P∧┓Q)∨(┓P∧Q)
D.P∨┓Q∨(P∧┓Q)∨(┓P∧┓Q)
2009(普及提高均无)
2008提高
13.若A=True,B=False,C=True,D=False,以下逻辑运算表达式真的有( )。
A.(A∧B)∨(C∧D ∨ ¬A) B.((¬A ∧ B)∨ C)∧ ¬B
C.(B ∨C ∨ D)∨ D∧A D.A ∧(D ∨¬C)∧B
2008普及
2、设A=true,B=false,C=true,D=false,以下逻辑运算表达式值为真的是( )。
A. (A∧B)∨(C∧D∨ A) B. (( A∧B)∨C)∧ D
C. (B∨C∨D)∧D∧A D. A∧(D∨ C)∧B
2007模拟
15、当(A>=B) and (B>=C)的取值为true时,那么表达式(A>C) or (B=C)的取值为( )。
A. True B. False C. 无法判断
D. 只有当ABC三个数都为正数时才为true
E. 只有当ABC三个数都为正数时才为false
2007提高
5、在Pascal语言中, 表达式(23 or 2 xor 5)的值是( )
A. 18 B. 1 C. 23 D. 32 E. 24
6、在Pascal语言中, 判断整数a等于0或b等于0或c等于0的正确的条件表达式是( )
A. not ((a<>0) or (b<>0) or (c<>0)) B. not ((a<>0) and (b<>0) and (c<>0))
C. not ((a=0) and (b=0) and (c=0)) D. (a=0) and (b=0) and (c=0)
E. not ((a=0) or (b=0) or (c=0))
11、设A=B=true,C=D=false,以下逻辑运算表达式为真的有( )。
A. ( A∧B)∨(C∧D∨A) B. ((A∧B)∨C)∧D
C. A∧(B∨C∨D)∨D D. A∧(D∨C)∧B
12、命题“P→Q”可读做P蕴涵Q,其中P、Q是两个独立的命题。只有当命题P成立而命题Q不成立时,命题“P→Q”的值为false,其他情况均为true。与命题“P→Q”等价的逻辑关系式是( )。
A. P∨Q B. P∧Q C. (P∨Q) D. ( Q∧P)
2007普及
18、设A=B=True,C=D=False,一下逻辑运算表达式值为假的有( )。
A.(﹁A∧B)∨(C∧D∨A) B.﹁(((A∧B)∨C)∧D)
C.A∧(B∨C∨D)∨D D.(A∧(D∨C))∧B
2006提高
5、在Pascal语言中,表达式 (21 xor 2)的值是( )
A. 441 B. 42 C.23 D.24 E.25
6、在Pascal语言中,判断a不等于0且b不等于0的正确的条件表达式是( )
A. not a=0 or not b=0 B. not((a=0)and(b=0)) C. not(a=0 and b=0)
D. (a<>0)or(b<>0) E. (a<>0)and (b<>0)
11、设A=B=D=true,C=E=false,以下逻辑运算表达式值为真的有( )。
A. (A∧B)∨(C∧D)∨E B. (((A∧B)∨C)∧D∧E)
C. A∧(B∨C∨D∨E) D. (A∧(B∨C)) ∧D∧E
2005提高
2、设全集I = {a, b, c, d, e, f, g, h},集合 B A = {a, b, c, d, e, f}, A C = {c, d, e},
~B A= {a, d},那么集合 C B A为( )。
A. {c, e} B. {d, e} C. {e} D. {c, d, e} E. {d, f}
题解:集合其实也是与或运算的范围。
2004提高
1、设全集I = {a, b, c, d, e, f, g},集合A = {a, b, c},B = {b, d, e},C = {e, f, g},那么集合 为( )。
A. {a, b, c, d} B. {a, b, d, e} C. {b, d, e} D. {b, c, d, e} E. {d, f, g}
题解:2004和2005都出现了集合运算,虽然后来没有再出现,但集合的运算还是需要掌握的。
并运算: ;交运算: ;差运算: ;非运算: (区别于逻辑非运算: )
并运算:比如A B,就是A集合和B集合里所有元素组成一个新集合,重复的元素只保留一份。A B —> {a, b, c, b, d, e}—> {a, b, c, d, e}。
交运算:比如A B,就是同时在A集合和B集合的元素组成一个新集合。A B —> {b}。
差运算:比如A B,就是A集合删去A B里的元素后组成一个新集合。A B —> {a, c}。
非运算:如是单目运算符,比如 A。非运算有个特殊的要求:一定要说明全集。那么 A就全集删去A集合中的元素,剩下的全集中的元素组成一个新集合。 A= {d, e, f, g}。

答案:
2010提高:3A
2008提高:13BC
2008普及:2B
2007模拟:15A
2007提高:5A,6B,11AC,12AD
2007普及:18D
2006提高:5C,6E,11AC
2005提高:2A
2004提高:1A

【程序练习】

1、找筷子
2、高低位交换

猜你喜欢

转载自blog.csdn.net/qq_32431299/article/details/111504947