离散数学实验报告命题逻辑—构造命题公式的真值表

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【实验目的】

使学生熟练掌握利用计算机语言实现逻辑运算的基本方法。

【实验内容】

对给出的任意一个命题公式(不超过四个命题变元),使学生会用C语言的程序编程表示出来,并且能够计算它在各组真值指派下所应有的真值,画出其真值表。

【实验原理】

给出任意一个命题公式,我们可以将它用C程序表示出来,并且能够计算它在各组真值指派下所应有的真值(或是逻辑运算的结果)。这有多种方法。上面我们已经给出了逻辑连结词的定义,根据这种定义方法,我们也可以把一个命题公式表示成为条件语句中的条件表达式,这样我们就可以得到该命题公式的逻辑运算结果了。

【程序代码】

#include

using namespace std;

int a[8][3]={{0,0,0},{0,0,1},{0,1,0},{0,1,1},{1,0,0},{1,0,1},{1,1,0},{1,1,1}};

int b[8]={0,0,0,0,0,0,0,0};

int xa[8]={0,0,0,0,0,0,0,0};

int s(char c,int as,int i){//1 true;0 false

if(c=='|'){

if(a[i][as]==1||a[i][as+1]==1){

return 1;

} else{

return 0;

}

}

if(c=='&'){

if(a[i][as]==1&&a[i][as+1]==1){

return 1;

} else{

return 0;

}

}

if(c=='='){

if(a[i][as]==a[i][as+1]){

return 1;

} else{

return 0;

}

}

if(c=='!'){

if(a[i][as]==a[i][as+1]){

return 0;

return 1;

}

}

if(c=='>'){

if(a[i][as]==1||a[i][as+1]==0){

return 0;

} else{

return 1;

}

}

}

int so(char c,int i,int as){

if(c=='|'){

if(xa[i]==1||a[i][as+1]==1){

return 1;

} else{

return 0;

}

}

if(c=='&'){

if(xa[i]==1&&a[i][as+1]==1){

return 1;

} else{

return 0;

}

}

if(c=='='){

if(xa[i]==a[i][as+1]){

return 1;

} else{

return 0;

}

}

if(c=='!'){

if(xa[i]==a[i][as+1]){

return 0;

} else{

return 1;

}

}

if(c=='>'){

if(xa[i]==1||a[i][as+1]==0){

return 0;

return 1;

}

}

}

int main(void) {

string f;

cin>>f;

char c1=f[1];

char c2=f[3];

for(int i=0;i<8;i++){

for(int j=0;j<3;j++){

printf("%d ",a[i][j]);

}

printf("\n");

}

for(int i=0;i<8;i++){

xa[i]=s(c1,0,i);

}

for(int i=0;i<8;i++){

b[i]=so(c2,i,1);

}

for(int i=0;i<8;i++){

printf("%d\n",b[i]);

}

return 0;

}

【实验结果】

【实验心得】

相关文档
最新文档