离散数学实验 命题逻辑2浙江中医药大学Word格式.docx
- 文档编号:15157030
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:20
- 大小:278.56KB
离散数学实验 命题逻辑2浙江中医药大学Word格式.docx
《离散数学实验 命题逻辑2浙江中医药大学Word格式.docx》由会员分享,可在线阅读,更多相关《离散数学实验 命题逻辑2浙江中医药大学Word格式.docx(20页珍藏版)》请在冰豆网上搜索。
1.实验原理
真值表:
列出命题公式真假值的表,通常以1表示真,0表示假。
命题公式的取值由组成命题公式的命题变元的取值和命题联结词决定,命题联结词的真值表给出了真假值的算法。
2.实验过程
对于给定的命题公式,生成相应真值表,然后用函数运算,输出结果:
如生成逻辑非、合取、析取、条件、双条件表达式的真值表,例如:
输入!
a
输出真值表如下:
a!
11
20
输入a&
&
b
aba∧b
000
010
100
111
输入a||b
aba∨b
011
101
输入a->
aba→b
001
输入a<
>
b(其中<
表示双条件)
aba←→b
6.【源程序(带注释)】
#include<
stdio.h>
stdlib.h>
string.h>
staticinta[2];
//定义全局数组a[2]
voidmain()
{
intluojifei();
//声明逻辑非函数
inthequ();
//声明合取函数
intxiqu();
//声明析取函数
inttiaojian();
//声明条件函数
intshuangtiaojian();
//声明双条件函数
voidprint();
//声明打印星号函数
charn[10];
charc;
print();
//打印星号
loop:
//loop循环开始标记
do
{
fflush(stdin);
//清空输入缓存区,以免对后面的数据输入造成干扰
printf("
请选择(1-6)要进行的真值表运算:
\n\n"
);
\t1.逻辑非(┌P)\n\t2.合取(P∧Q)\n\t3.析取(P∨Q)\n\t4.条件(P→Q)\n\t5.双条件(P←→Q)\n\t6.继续/退出(y/n)\n"
\t提示:
若想查看真值表,按提示输入:
\n\t!
a查看逻辑非真值表\n\ta&
b查看合取真值表\n\ta||b查看析取真值表\n\ta->
b查看条件真值表\n\ta<
b查看双条件真值表\n"
scanf("
%s"
n);
//接收用户输入的功能序号
if(strcmp("
1"
n)==0)//若输入为1,进行逻辑非运算
\n逻辑非结果┌P=%d\n"
luojifei());
//逻辑非运算结果来自luojifei子函数的返回值
system("
pause"
}
2"
n)==0)//若输入为2,进行合取运算
{
\n合取结果(P∧Q)=%d\n"
hequ());
//合取运算结果来自hequ子函数的返回值
3"
n)==0)//若输入为3,进行析取运算
\n析取结果(P∨Q)=%d\n"
xiqu());
//析取运算结果来自xiqu子函数的返回值
4"
n)==0)//若输入为4,进行条件运算
\n条件运算结果(P→Q)=%d\n"
tiaojian());
//条件运算结果来自tiaojian子函数的返回值
5"
n)==0)//若输入为5,进行双条件运算
\n双条件运算结果(P→Q)=%d\n"
shuangtiaojian());
//双条件运算结果来自shuangtiaojian子函数的返回值
6"
n)==0)break;
//若输入为6,跳出while循环
!
a"
n)==0){printf("
逻辑非真值表为:
\n\ta!
a\n\t01\n\t10\n"
);
fflush(stdin);
system("
}
a&
b"
合取真值表为:
\n\taba∧b\n\t000\n\t010\n\t100\n\t111\n"
a||b"
析取真值表为:
\n\taba∨b\n\t000\n\t011\n\t101\n\t111\n"
a->
条件真值表为:
\n\taba→b\n\t001\n\t011\n\t100\n\t111\n"
a<
双条件真值表为:
\n\taba←→b\n\t001\n\t010\n\t100\n\t111\n"
}while((c==getchar())!
=EOF);
//一直执行while循环,直到无更多的数据可读取档案结束
\n确认退出(y/n)?
"
%c"
&
c);
//接收用户输入的字符
if(c=='
y'
)exit
(1);
//字符为y,则退出程序
else
gotoloop;
//返回loop循环起始标签
voidprint()//定义print函数
****************************************************************\n"
intpanduanp(intp)//定义判断p的值是否有效的panduanp函数
while(p!
=0&
p!
=1)//当p不为0,且p不为1的时候进入while循环
\n输入有误,请重新输入P的值(0或1):
\nP="
//提示用户输错数据
%d"
p);
//重新接收p的值,再进行while循环判断
returnp;
}
voidpanduanpq(intp,intq)//定义判断p和q的值是否有效的panduanpq函数
while((p!
=1)||(q!
q!
=1))//当p不为0也不为1,q不为0也不为1的时候进入循环
输入错误,请重新输入:
\nQ="
q);
//重新接收p和q的值,再进行while循环判断
a[0]=p;
a[1]=q;
//将正确的p和q的值分别存储到全局数组变量a[0],a[1]中
intluojifei()//定义逻辑非函数
intpanduanp(intp);
//子函数里声明panduanp函数
intp;
\n您要进行逻辑非运算,请输入P的值:
if(panduanp(p)==1)return0;
//调用判断p函数来确保输入的数据有效,并传送回p的值,再对p的值进行逻辑非判断
elsereturn1;
inthequ()//定义合取函数
voidpanduanpq(intp,intq);
//子函数里声明panduanpq函数
intp,q;
\n您要进行合取运算,请输入P与Q的值(0或1):
Q="
panduanpq(p,q);
//调用判断pq函数来确保输入的p,q数据有效,有效数据在判断pq函数中已经储存到了全局变量a[0],a[1]中
if(a[0]==1&
a[1]==1)return1;
//合取时,只有在p,q均为1的时候,才返回1的值
elsereturn0;
intxiqu()//定义析取函数
//子函数里声明panduanpq函数
\n您要进行析取运算,请输入P与Q的值(0或1):
if(a[0]==1||a[1]==1)return1;
//析取时,只要有一个为1,即返回1的值
inttiaojian()//定义条件运算函数
{
v
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 离散数学实验 命题逻辑2浙江中医药大学 离散数学 实验 命题逻辑 浙江 中医药 大学