联结词的逻辑运算
程序员文章站
2022-07-12 12:31:16
...
实验一 联结词的逻辑运算
一、实验目的
实现一元否定,以及二元合取、析取、蕴涵和等价命题公式的计算,熟悉联结词逻辑运算规则。
二、实验内容
从键盘输入两个命题变元p和q的真值,求p的否定运算的真值以及求p和q的合取、析取、蕴涵和等价运算的真值。要求对输入内容进行分析,如果不符合0、1条件需要重新输入,程序有良好的输入输出界面。
三、实验环境
采用C语言为编程语言实现。
四、实验过程参考
- 算法分析
(1)否定:p为1时公式值为0,否则为1;
(1)合取:p,q都为1时公式值为1,其他为0;
(2)析取:p,q都为0时公式值为0,其他为1;
(3)蕴含:p为1,q为0时公式值为0,其他为1;
(4)等价:p,q同真同假时公式值为1,其他为0。 - 实验数据及结果分析
参考实验结果:
#include<stdio.h>
#include <windows.h>
int a,b,c;
void color(short x) //自定义函根据参数改变颜色
{
if(x>=0 && x<=15)//参数在0-15的范围颜色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x);
//只有一个参数,改变字体颜色
Else //默认的颜色白色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
}
void menu() //标题
{
printf("**离散数学实验一联结词的逻辑运算**\n" );
}
void input() //输入数据
{
printf("请输入P的值(0或1),以回车结束:\n" );
scanf("%d",&a);
printf("请输入q的值(0或1),以回车结束:\n" );
scanf("%d",&b);
while((a!=1||a!=0)&&(b!=1||b!=0))//两个数据进行统一验证
{
if((a==1||a==0)&&(b==1||b==0))
break;
color(4);printf("您的输入有误!请重新输入:\n");
color(16);input();
}
/*if (a==1||a==0){}//两个数据进行分别验证
else
{
printf("P不能输入为%d\n",a );
color(4);printf("您的输入有误!请重新输入:\n");
color(16);input();
}
if (b==1||b==0){}
else
{
printf("q不能输入为%d\n",b );
color(4);printf("您的输入有误!请重新输入:\n");
color(16);input();
}*/
}
void count() //计算过程
{
color(6);printf("\tP\tq\t¬p\tp∧q\tp∨q\tp→q\tp﹤-﹥q\n");color(16);
if(a==0&&b==0)
{
printf("\t0\t0\t1\t0\t0\t1\t1\n");
}
if(a==0&&b==1)
{
printf("\t0\t1\t1\t0\t1\t1\t0\n");
}
if(a==1&&b==0)
{
printf("\t1\t0\t0\t0\t1\t0\t0\n");
}
if(a==1&&b==1)
{
printf("\t1\t1\t0\t1\t1\t1\t1\n");
}
}
void next() //继续进行计算
{
printf("是否继续运算?(1/default)输入1继续:" );
scanf("%d",&c);
if(c==1)
{
input();
count();
next();
}
else
{
color(6);printf("感谢您的使用!\n");color(16);
}
}
void main()
{
menu();
input();
count();
next();
}
误输入操作测试,相关操作数据及结果,如图1.2所示:
图2.2输入数据测试
2.3计算结果如图1.3所示
图1.3数据处理结果
上一篇: php 通过扫描证书获取到期时间
下一篇: Java构造函数--要点