C语言--离散数学实验--命题逻辑及其应用(实验报告下载)

简介: C语言--离散数学实验--命题逻辑及其应用(实验报告下载)

 目录

下载链接

设计一个5人表决开关电路

代码实现

确定谁是作案者

代码实现


下载链接

链接:https://pan.baidu.com/s/1nDnISBjZjbD6Bf4qqzICsw?pwd=1234 

提取码:1234

设计一个5人表决开关电路

【实验目的】加深对五个基本联结词(否定、合取、析取、条件、双条件)的理解、掌握利用基本等价公式化简公式的方法。

【实验内容】用化简命题逻辑公式的方法设计一个表决开关电路。

实验用例:用化简命题逻辑公式的方法设计一个5人表决开关电路,要求3人以上(含3人)同意则表决通过(表决开关亮)。

用化简命题逻辑公式的方法设计一个5人表决开关电路,要求3人以上(含3人)同意则表决通过(表决开关亮)。

  3人或3人以上同意(即表决为1)时,表决通过,开关亮,共列出10种3人搭配,10种3人之间的搭配为析取的关系,

【实验原理和方法】

(1)写出5人表决开关电路真值表,从真值表得出5人表决开关电路的主合取公式(或主析取公式),将公式化简成尽可能含五个基本联结词最少的等价公式。

(2)上面公式中的每一个联结词是一个开关元件,将它们定义成C语言中的函数。

(3)输入5人表决值(0或1),调用上面定义的函数,将5人表决开关电路真值表的等价公式写成一个函数表达式。

(4)输出函数表达式的结果,如果是1,则表明表决通过,否则表决不通过。

代码实现

具体代码如下所示:(只看第一个即可)

#include <stdio.h>
int main()
{  
    int vote(int a,int b,int c,int d,int e);
  int a,b,c,d,e;
  printf("请输入5个人的表决值:\n");
  scanf("%d %d %d %d %d",&a,&b,&c,&d,&e);
  if(vote(a,b,c,d,e))
  printf("表决通过了!\n");
  else
  printf("很遗憾,表决没有被通过!");
}
int vote(int a,int b,int c,int d,int e)
{
  if(a&&b&&c||a&&b&&d||a&&b&&e||a&&c&&d||a&&c&&e||a&&d&&e||b&&c&&d||b&&c&&e||b&&d&&e||c&&d&&e)
  return 1;
  else 
  return 0;
}

image.gif

#include <stdio.h>
int main()
{  
    int vote(int a,int b,int c,int d,int e);
  int a,b,c,d,e;
  printf("请输入5个人的表决值:\n");
  scanf("%d %d %d %d %d",&a,&b,&c,&d,&e);
  if(vote(a,b,c,d,e))
  printf("表决通过了!\n");
  else
  printf("很遗憾,表决没有被通过!");
}
int vote(int a,int b,int c,int d,int e)
{
  if(a&&b&&c||a&&b&&d||a&&b&&e||a&&c&&d||a&&c&&e||a&&d&&e||b&&c&&d||b&&c&&e||b&&d&&e||c&&d&&e)
  return 1;
  else 
  return 0;
}

image.gif

#include <stdio.h>
int main()
{  
    int vote(int a,int b,int c,int d,int e);
  int a,b,c,d,e;
  printf("请输入5个人的表决值:\n");
  scanf("%d %d %d %d %d",&a,&b,&c,&d,&e);
  if(vote(a,b,c,d,e))
  printf("表决通过了!\n");
  else
  printf("很遗憾,表决没有被通过!");
}
int vote(int a,int b,int c,int d,int e)
{
  if(a&&b&&c||a&&b&&d||a&&b&&e||a&&c&&d||a&&c&&e||a&&d&&e||b&&c&&d||b&&c&&e||b&&d&&e||c&&d&&e)
  return 1;
  else 
  return 0;
}

image.gif

确定谁是作案者

【实验目的】加深对命题逻辑推理方法的理解。

【实验内容】用命题逻辑推理的方法解决逻辑推理问题。

根据下面的命题,试用逻辑推理方法确定谁是作案者,写出推理过程。离散指

(1)营业员A或B偷了手表;

(2)若A作案,则作案不在营业时间;

(3)若B提供的证据正确,则货柜末上锁;

(4)若B提供的证据不正确,则作案发生在营业时间;

(5)货柜上了锁。

用命题题变元表示

A:营业员A偷了手表

B:营业员B偷了手表

C:作案不在营业时间

D:B提供的证据正确

E:货柜没有上锁

(1)符号化上面的命题,将它们作为条件,营业员A偷了手表作为结论,得一个复合命题。

(2)将复合命题中要用到的联结词定义成C语言中的函数,用变量表示相应的命题变元。将复合命题写成一个函数表达式。

(3)函数表达式中的变量赋初值1。如果函数表达式的值为1,则结论有效, A偷了手表,否则是B偷了手表

代码实现

具体代码如下所示:(只看第一个即可)

#include<stdio.h>
int main()
{ int A,B,C,D,E;
  for(A=0;A<=1;A++)
   for(B=0;B<=1;B++)
    for(C=0;C<=1;C++)
     for(D=0;D<=1;D++)
      for(E=0;E<=1;E++)
       if((A||B)&&(!A||C)&&(!D||E)&&(D||!C)&&!E)
       printf("A=%d,B=%d",A,B);
       return 0;
}

image.gif

#include<stdio.h>
int main()
{ int A,B,C,D,E;
  for(A=0;A<=1;A++)
   for(B=0;B<=1;B++)
    for(C=0;C<=1;C++)
     for(D=0;D<=1;D++)
      for(E=0;E<=1;E++)
       if((A||B)&&(!A||C)&&(!D||E)&&(D||!C)&&!E)
       printf("A=%d,B=%d",A,B);
       return 0;
}

image.gif

#include<stdio.h>
int main()
{ int A,B,C,D,E;
  for(A=0;A<=1;A++)
   for(B=0;B<=1;B++)
    for(C=0;C<=1;C++)
     for(D=0;D<=1;D++)
      for(E=0;E<=1;E++)
       if((A||B)&&(!A||C)&&(!D||E)&&(D||!C)&&!E)
       printf("A=%d,B=%d",A,B);
       return 0;
}

image.gif

链接:https://pan.baidu.com/s/1nDnISBjZjbD6Bf4qqzICsw?pwd=1234 

提取码:1234

相关文章
|
1月前
|
存储 算法 C语言
通义灵码在考研C语言和数据结构中的应用实践 1-5
通义灵码在考研C语言和数据结构中的应用实践,体验通义灵码的强大思路。《趣学C语言和数据结构100例》精选了五个经典问题及其解决方案,包括求最大公约数和最小公倍数、统计字符类型、求特殊数列和、计算阶乘和双阶乘、以及求斐波那契数列的前20项和。通过这些实例,帮助读者掌握C语言的基本语法和常用算法,提升编程能力。
60 4
|
2月前
|
C语言
C语言判断逻辑的高阶用法
在C语言中,高级的判断逻辑技巧能显著提升代码的可读性、灵活性和效率。本文介绍了六种常见方法:1) 函数指针,如回调机制;2) 逻辑运算符组合,实现复杂条件判断;3) 宏定义简化逻辑;4) 结构体与联合体组织复杂数据;5) 递归与分治法处理树形结构;6) 状态机管理状态转换。通过这些方法,可以更高效地管理和实现复杂的逻辑判断,使代码更加清晰易懂。
229 88
|
1月前
|
C语言
大学生期末C语言实验(学生成绩和鞍点)
大学生期末C语言实验(学生成绩和鞍点)
154 0
大学生期末C语言实验(学生成绩和鞍点)
ly~
|
1月前
|
网络协议 算法 关系型数据库
C语言的应用
C 语言因其高效性和对硬件的直接访问能力,在多个领域有广泛应用。在系统软件领域,它被用于开发操作系统(如 Unix 和 Linux 的内核)和嵌入式系统(如汽车电子控制系统)。在游戏开发中,C 语言常用于构建游戏引擎的底层部分(如 Unity 和 Unreal Engine 的核心模块)及性能要求高的独立游戏。此外,C 语言也用于数据库管理系统(如 MySQL 和 PostgreSQL 的核心功能)和网络编程(如 TCP/IP 协议栈和网络服务器的核心模块)。
ly~
34 3
|
1月前
|
Java Unix Linux
1.3 C语言的应用范围
C语言自20世纪80年代以来一直是主流编程语言,适用于小型计算机、个人电脑及大型机。因其高效紧凑且易于修改和移植,广泛用于软件开发。尽管后来C++和JAVA流行起来,但C语言仍然是软件行业核心,并在嵌入式系统、科学编程和操作系统开发如Linux中扮演重要角色。即使到现在,掌握C语言仍是一项重要技能。不是必须得是计算机专家才能使用C语言,学习C语言同时也能学到很多C++的知识。
49 8
|
1月前
|
编译器 C语言 C++
【C语言】精妙运用内存函数:深入底层逻辑的探索
【C语言】精妙运用内存函数:深入底层逻辑的探索
|
2月前
|
存储 C语言
数据结构基础详解(C语言): 树与二叉树的应用_哈夫曼树与哈夫曼曼编码_并查集_二叉排序树_平衡二叉树
本文详细介绍了树与二叉树的应用,涵盖哈夫曼树与哈夫曼编码、并查集以及二叉排序树等内容。首先讲解了哈夫曼树的构造方法及其在数据压缩中的应用;接着介绍了并查集的基本概念、存储结构及优化方法;随后探讨了二叉排序树的定义、查找、插入和删除操作;最后阐述了平衡二叉树的概念及其在保证树平衡状态下的插入和删除操作。通过本文,读者可以全面了解树与二叉树在实际问题中的应用技巧和优化策略。
|
2月前
|
存储 安全 C语言
C语言 二级指针应用场景
本文介绍了二级指针在 C 语言中的应用,
|
3月前
|
程序员 C语言
位操作在C语言中的解析与应用
位操作在C语言中的解析与应用
90 0
|
3月前
|
程序员 编译器 C语言
C语言中的预处理指令及其实际应用
C语言中的预处理指令及其实际应用
86 0

相关实验场景

更多