当前位置:文档之家› 离散数学命题公式真值表C++或C语言实验报告

离散数学命题公式真值表C++或C语言实验报告

离散数学实验报告
专业班级:12级计算机本部一班姓名:鲍佳珍
学号:201212201401016 实验成绩:
1.【实验题目】
命题逻辑实验二
2.【实验目的】
熟悉掌握命题逻辑中真值表,进一步能用它们来解决实际问题。

3.【实验内容】
求任意一个命题公式的真值表
4、【实验要求】
C或C++语言编程实现
5. 【算法描述】
1.实验原理
真值表:表征逻辑事件输入和输出之间全部可能状态的表格。

列出命题公式真假值的表。

通常以1表示真,0 表示假。

命题公式的取值由组成命题公式的命题变元的取值和命题联结词决定,命题联结词的真值表给出了真假值的算法。

真值表是在逻辑中使用的一类数学表,用来确定一个表达式是否为真或有效。

2.实验过程
首先是输入一个合理的式子,生成相应真值表,然后用函数运算,输出结果:要求可生成逻辑非、合取、析取、蕴含、双条件表达式的真值表,例如:输入 !a
输出真值表如下:
a !a
0 1
10
输入a&&b
输出真值表如下:
a b a&&b
0 0 0
0 1 0
1 0 0
1 1 1
输入a||b
输出真值表如下:
a b a||b
0 0 0
0 1 1
1 0 1
1 1 1
输入a->b
输出真值表如下:
a b a->b
0 0 1
0 1 1
1 0 0
1 1 1
输入a<>b (其中<>表示双条件) 输出真值表如下:
a b a<>b
0 0 1
0 1 0
1 0 0
1 1 1
6.【源程序(带注释)】
#include<stdio.h>
#include<string.h>
void hequ();
void yunhan();
void xiqu();
void shuang();
void fei();//声明五个函数
int main()
{
int ch;
char s[10];
printf("欢迎使用命题公式真值表查找软件\n\n");
printf("1.合取 2.析取 3.蕴含 4.双条件 5.非0.结束查找\n");//软件使用界面的输出
scanf("%d",&ch);
while(ch){
printf("\n\n您能查找真值表的命题公式有以下几种:\n\n");
printf("1.合取请输入a&&b 2.析取请输入a||b 3.蕴含请输入a->b 4.双条件请输入a<>b 5.非请输入!a\n");//选择输入的公式类型
getchar();
printf("请输入您所需要查询的公式:");
scanf("%s",s);
if(!strcmp(s,"a&&b"))
hequ();
else if(!strcmp(s,"!a"))
fei();
else if(!strcmp(s,"a||b"))
xiqu();
else if(!strcmp(s,"a->b"))
yunhan();
else if(!strcmp(s,"a<>b"))//将输入的公式与程序内存在的公式进行比较
shuang();
else
printf("对不起,您所要查找的公式不存在!\n\n");
printf("\n 1.继续查找0.结束\n\n");
scanf("%d",&ch); //使程序循环
}
return 0;
}
void hequ()
{
printf("a b a&&b\n");
printf("0 1 0\n");
printf("0 0 0\n");
printf("1 0 0\n");
printf("1 1 1\n");
}
void xiqu()
{
printf("a b a||b\n");
printf("0 1 1\n");
printf("1 0 1\n");
printf("1 1 1\n"); }
void yunhan()
{
printf("a b a->b\n");
printf("0 1 1\n");
printf("0 0 1\n");
printf("1 0 0\n");
printf("1 1 1\n"); }
void fei()
{
printf("a !a\n");
printf("1 0\n");
printf("0 1\n");
}
void shuang()
{
printf("a b a<>b\n");
printf("0 1 0\n");
printf("1 0 0\n");
printf("1 1 1\n");
} //定义五个函数
7.【实验结果与分析总结(含运行结果截图)】输入界面
输入公式并输出真值表
继续查找结束程序。

相关主题