联结词的逻辑运算

实验一 联结词的逻辑运算

一、实验目的
实现一元否定,以及二元合取、析取、蕴涵和等价命题公式的计算,熟悉联结词逻辑运算规则。
二、实验内容
从键盘输入两个命题变元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数据处理结果

发布了4 篇原创文章 · 获赞 4 · 访问量 44

猜你喜欢

转载自blog.csdn.net/qq_44825810/article/details/105446596