欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

联结词的逻辑运算

程序员文章站 2022-07-12 12:31:16
...

实验一 联结词的逻辑运算

一、实验目的
实现一元否定,以及二元合取、析取、蕴涵和等价命题公式的计算,熟悉联结词逻辑运算规则。
二、实验内容
从键盘输入两个命题变元p和q的真值,求p的否定运算的真值以及求p和q的合取、析取、蕴涵和等价运算的真值。要求对输入内容进行分析,如果不符合0、1条件需要重新输入,程序有良好的输入输出界面。
三、实验环境
采用C语言为编程语言实现。
四、实验过程参考

  1. 算法分析
    (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。
  2. 实验数据及结果分析
    参考实验结果:
#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数据处理结果