《离散数学》 实验报告 题 目 专 业 学 号 姓 名 指导教师 提交日期 - 1 - 实验一 五种连结词的逻辑运算 一.实验目的 用C 语言实现两个命题变元的合取、析取、蕴涵和等价表达式的计算。熟悉连接词逻辑运算规则,利用程序语言实现逻辑这几种逻辑运算。 二.实验内容 从键盘输入两个命题变元P 和 Q 的真值,求它们的合取、析取、蕴涵和等价四种运算的的真值。要求对输入内容进行分析,如果不符合0、1 条件需要重新输入,程序有良好的输入输出界面。 三. 实验过程 1. 算法分析: 编程语言为 c 语言 合取/\:p,q 都为 1 的时候为 1,其他为 0 析取\/:p,q 都为 0 的时候为 0,其他为 1 蕴含->:p 为 1,q 为 0 时为 0,其他为 1 等价<->:p,q 同真同假 流程图 - 2 - 2. 程序代码: #include int main() { int p,q,i,t; printf("************************************************\n"); printf("*** ***\n"); printf(" 欢迎进入逻辑运算软件\n"); printf("*** ***\n"); printf("************************************************\n"); do{ printf("请输入p 的值(0 或1)"); scanf("%d",&p); if(p!=0&&p!=1) printf("输入有误"); }while(p!=0&&p!=1); 开始 P 为 1 或0 P 为 1 或0 运算 是否继续 结束 Y Y Y N N N 输入P 值 输入Q 值 输出结果 - 3 - do{ printf("请输入q 的值(0 或1)"); scanf("%d",&q); if(q!=0&&q!=1) printf("输入有误"); } while(q!=0&&q!=1); do{ printf("请选择要进行的操作\n"); printf("1:合取\n2:析取\n3:蕴含\n4:等价\n"); scanf("%d",&i); switch(i){ case 1:{ if(p&&q) printf("合取运算:p/\q=1\n"); else printf("合取运算:p/\q=0\n"); break; } case 2:{ if(p||q) printf("析取运算:p\/q=1\n"); else printf("析取运算:p\/q=0\n"); break; } case 3:{ if(p&&!q) printf("蕴含:p->q=0\n"); else printf("蕴含:p->q=1\n"); break;} case 4:{ if((p&&q)||(!p&&!q)) printf("等价运算:p<->q=1\n"); else printf("等价运算:p<->q=0\n"); break; } } printf("是否继续运算 1\\0\n"); scanf("%d",&t); } while(t); return 0; } - 4 - 3.实验数据及结果分析; 图1 .初始界面 图2 .输入及选择进行的操作 - 5 - 图3.循环操作 ...