离散实验报告

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

离散实验报告

专业:数学与应用数学

班级:091121

学号:2009112125

姓名:张鼎珩

日期:2011.06.23

实验内容:

实验一真值计算

实验二两个集合运算

实验三关系闭包计算

实验四关系与函数

进行试验:

实验一真值计算

一、实验目的

熟悉联结词合取、析取、条件和双条件的概念,编程求其真值。

二、实验内容

(1)求任意一个命题公式的真值表:从键盘输入两个命题P 和Q

的真值,求它们的合取、析取、蕴含和等价的真值

(2)利用真值表求任意一个命题公式的主范式

(3)利用真值表进行逻辑推理

三实验程序:

#include/*标准输入输出头文件*/

#include/*该文件包含了的C语言标准库函数的定义*/

#include/*字符串数组的函数定义的头文件*/

#include/*通用输入输出库*/

#include

#define N 50

void jisuan();

void zhenzhibiao();

void panduan(int b[N],int f);

int tkh (char sz[N], char ccu[N], int icu[N], int h0);

int fkh (char sz[N], char ccu[N], int icu[N], int h0);

main()

{

int a1;

start:

do

{

printf(" 1.求P、Q的合取、析取、条件和双条件的真值\n 2.求任意一个命题公式的真值表,并根据真值表求主范式\n 3.退出\n");

printf("\n选择功能选项:");

fflush(stdin);/*清空输入缓冲区,通常是为了确保不影响后面的数据读取*/

scanf("%d",&a1);

switch(a1)/*switch语句实现选择功能*/

{

case 1:system("cls");jisuan();break;/*功能A*/

case 2:system("cls");fflush(stdin);zhenzhibiao();break;/*功能BC*/

case 3:system("exit");exit(0);/*结束整个程序的运行*/

default:system("cls");goto start;/*控制流转移到start处*/

}

}while(1);

}

void jisuan()/*功能A*/

{

char p,q,t,ch;

int p1,q1;

do

{

start:

fflush(stdin);

printf("请输入P和Q的真值(T或F):");

scanf("%c,%c",&p,&q);

if((p=='F'||p=='f'||p=='T'||p=='t')&&(q=='F'||q=='f'||q=='T'||q==

't'))

{

if(p=='F'||p=='f')/*赋值*/

p1=0;

else

p1=1;

if(q=='F'||q=='f')

q1=0;

else

q1=1;

if(p1|q1)/*计算*/

t='T';

else

t='F';

printf("P析取Q为:%c\n",t);

if(p1&q1)

t='T';

else

t='F';

printf("P和取Q为:%c\n",t);

if((!p1)|q1)

t='T';

else

t='F';

printf("P条件Q为:%c\n",t);

if(p1==q1)

t='T';

else

t='F';

printf("P双条件Q为:%c\n",t);

}

else

{

printf("请按正确格式输入!\n");

goto start;

};

printf("是否继续输入?Y/N");

fflush(stdin);

ch=getch();

system("cls");

}while(ch!='n'&&ch!='N');

}

void zhenzhibiao()/*功能BC*/

{

int i1,i2,d=1,icu[N],kh=0,jg,j=0,h0;

int bj=0,hq[N],h=0,x=0,xq[N];

char sz[N],ccu[N],sz0[N];

hq[0]=-1;

xq[0]=-1;

printf("请输入一个合法的命题公式(可含与或非及括号):\n");

gets(sz);

strcpy(sz0,sz);

for(i1=0;i1

{

if(sz[i1]==')' || sz[i1]=='(')

kh++;

if(sz[i1]>='a' && sz[i1]<='z' || sz[i1]>='A' && sz[i1]<='Z')

{

for(i2=0;i2

if(ccu[i2]==sz[i1])

d=0;

if(d==1)

{

ccu[j]=sz[i1];

j++;

}

d=1;

}

}

printf("\n该式子中的变量个数为:%d\n",j);

h0=j;

printf("\n输出真值表如下:\n \n");

for(i1=0;i1

printf(" %c ",ccu[i1]);

printf(" ");

puts(sz);

printf("\n");

for(i1=0;i1

icu[i1]=0;

for(i2=0;i2

printf(" %d ",icu[i2]);

jg=tkh(sz,ccu,icu,h0);

相关文档
最新文档