任务描述
本关任务:编写一个程序,打印给定命题公式的真值表。
相关知识
为了完成本关任务,你需要掌握:
1.五个命题联接词的真值定义
1.列真值表时命题变元的排序顺序,真值指派的排列顺序
2.中缀式命题公式转换为后缀式命题公式
3.利用后缀式求特定真值指派下命题公式的真值
#####五个命题联接词的真值定义
为了输入方便,把教材中所使用的五个命题联接词符号(¬、 ∧、 ∨、→、↔),替换为(!、&、|、-、=)符号。其真值定义如下:
#####命题变元的真值指派
设p1,p2,…,pn是出现在公式A中的所有命题变元,给p1,p2,…,pn各指定一个真值,称为对公式A的一个真值指派(也称解释),用表格的形式按顺序列举出各真值指派之下,命题公式的真值,该表格可称之为命题公式的真值表。
真值表中命题变元真值指派的排列顺序
在列真值表时,命题变元按照符号的升序从左至右排列,命题变元的真值指派则按照二进制数的升序从上至下排列。
【例】命题公式:(┐p∧q)→┐r (即:(!p&q)-!r)的真值表派如下:
pqr (!p&q)-!r
000
001
010
011
100
101
110
111
#####命题变元真值指派的生成算法
在获取命题公式的所有命题变元后,按照字符升序顺序输出,并根据命题变元的个数n,利用n位数组存储n位二进制数,并模拟二进制逢二进一的加法规则,实现从
的变化,并输出。
【输入】
本题有多组测试数据。一行为一组测试数据,每组测试数据只包含!、&、|、-、= 、(、)等命题连接词与括号,以及用小写英文字母表示的命题变元组成的中缀式命题公式串(串中不含空格等其他字符),串的长度为N,且(1<=N<=100)
####【输出】
每个测试数据首行输出命题变元字典,与命题公式(两者中间插入6个空格字符做分隔)再输出n个命题变元的2的n次方个按二进制升序排列的真值指派,以在该真值指派之下命题公式的真值(两者中间插入6个空格字符做分隔),每组真值指派与命题公式真值占一行(行末尾不带空格)。
####【输入样例】
a|b
r&s
####【输出样例】
ab a|b
00 0
01 1
10 1
11 1
rs r&s
00 0
01 0
10 0
11 1
开始你的任务吧,祝你成功!











该博客主要介绍如何编写程序来生成命题公式的真值表。内容涉及命题联接词的真值定义、命题变元的真值指派顺序、真值表的构造方法以及命题变元真值指派的生成算法。通过示例展示了如何处理中缀式命题公式并输出相应的真值表。
3179

被折叠的 条评论
为什么被折叠?



