离散数学实验报告
专业班级:12级计算机本部一班姓名:鲍佳珍
学号: 2012********** 实验成绩:
1.【实验题目】
命题逻辑实验一
2.【实验目的】
熟悉把握命题逻辑中的连接词,实现二元合取、析取、蕴涵和等价表达式的估算。熟悉联接词逻辑运算规则,利用程序语言实现逻辑这几种逻辑运算。
3.【实验内容】
从按键输入两个命题变元P和Q的真值,求它们的合取、析取、条件和双条件的真值。(A)
4、【实验要求】
C或C++语言编程实现
5. 【算法描述】
(1)合取:二元命题连结词。将两个命题P、Q连结上去,构成一个新的命题P∧Q, 读作P、Q的合取, 也可读作P与Q。这个新命题的真值与构成它的命题P、Q的真值间的关系为只有当两个命题变项P = T, Q = T时方可P∧Q =T, 而P、Q只要有一为F则P∧Q = F。这样看来,P∧Q可拿来表示日常用语P与Q, 或P但是Q。
(2)析取:二元命题连结词。将两个命题P、Q连结上去,构成一个新的命题P∨Q, 读作P、Q的析取, 也可读作P或Q。这个新命题的真值与构成它的命题P、Q的真值间的关系为只有当两个命题变项P = F, Q = F时方可P∨Q =F, 而P、Q只要有一为T则P
∨Q = T。这样看来,P∨Q可拿来表示日常用语P或则Q。
(3)条件:二元命题连结词。将两个命题P、Q连结上去,构成一个新的命题P→Q, 读作P条件Q, 也可读作假如P,那么Q。这个新命题的真值与构成它的命题P、Q的真值间的关系为只有当两个命题变项P = T, Q = F时方可P→Q =F, 其余均为T。
(4)双条件:二元命题连结词。将两个命题P、Q连结上去,构成一个新的命题P←→Q, 读作P双条件于Q。这个新命题的真值与构成它的命题P、Q的真值间的关系为当两个命题变项P = T, Q =T时方可P←→Q =T, 其余均为F。
(1)A题部份,首先是对各个输入量的处理,要确定输入的为0或1,否则则为出错,接下来就是运算处理,在C语言中本身支持的有与或非这三种,可以用!,&&,||来表示,而在这个实验中,不是与或非的可以通过转化而变为与或非的方式,具体流程图如下:
开始
P为1或0
P为1或0
运算
是否继续
结束
Y
Y
Y
N
N
N
输入P值
输入Q值
输出结果
求合取、析取、条件和双条件的真值流程图
【源程序(带注释)】
#include
void xiqu(int m,int n);
void hequ(int m,int n);
void yunhan(int m,int n);
void shuang(int m,int n); // 声明四个自定义函数
int main()
{
int p,q,a;
printf("欢迎使用数理逻辑软件\n");
printf("请输入 P: ");
scanf("%d",&p);
while(p!=0&&p!=1){
printf("输入错误,请再度输入 P: ");//为满足P,Q不是1,0的情况
scanf("%d",&p);
}
printf("请输入 Q: ");
scanf("%d",