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

相关文章
|
2月前
|
存储 算法 C语言
通义灵码在考研C语言和数据结构中的应用实践 1-5
通义灵码在考研C语言和数据结构中的应用实践,体验通义灵码的强大思路。《趣学C语言和数据结构100例》精选了五个经典问题及其解决方案,包括求最大公约数和最小公倍数、统计字符类型、求特殊数列和、计算阶乘和双阶乘、以及求斐波那契数列的前20项和。通过这些实例,帮助读者掌握C语言的基本语法和常用算法,提升编程能力。
89 4
|
24天前
|
C语言
【C语言】逻辑操作符详解 - 《真假美猴王 ! 》
C语言中有三种主要的逻辑运算符:逻辑与(`&&`)、逻辑或(`||`)和逻辑非(`!`)。这些运算符用于执行布尔逻辑运算。
63 7
|
26天前
|
存储 算法 程序员
C 语言递归算法:以简洁代码驾驭复杂逻辑
C语言递归算法简介:通过简洁的代码实现复杂的逻辑处理,递归函数自我调用解决分层问题,高效而优雅。适用于树形结构遍历、数学计算等领域。
|
28天前
|
存储 缓存 算法
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式,强调了合理选择数据结构的重要性,并通过案例分析展示了其在实际项目中的应用,旨在帮助读者提升编程能力。
54 5
|
28天前
|
存储 程序员 编译器
C 语言数组与指针的深度剖析与应用
在C语言中,数组与指针是核心概念,二者既独立又紧密相连。数组是在连续内存中存储相同类型数据的结构,而指针则存储内存地址,二者结合可在数据处理、函数传参等方面发挥巨大作用。掌握它们的特性和关系,对于优化程序性能、灵活处理数据结构至关重要。
|
26天前
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
43 1
|
26天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
59 1
|
28天前
|
网络协议 物联网 数据处理
C语言在网络通信程序实现中的应用,介绍了网络通信的基本概念、C语言的特点及其在网络通信中的优势
本文探讨了C语言在网络通信程序实现中的应用,介绍了网络通信的基本概念、C语言的特点及其在网络通信中的优势。文章详细讲解了使用C语言实现网络通信程序的基本步骤,包括TCP和UDP通信程序的实现,并讨论了关键技术、优化方法及未来发展趋势,旨在帮助读者掌握C语言在网络通信中的应用技巧。
38 2
|
28天前
|
存储 算法 C语言
用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容
本文探讨了用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容,旨在为开发者提供全面的指导和灵感。
45 2
|
1月前
|
存储 C语言 计算机视觉
在C语言中指针数组和数组指针在动态内存分配中的应用
在C语言中,指针数组和数组指针均可用于动态内存分配。指针数组是数组的每个元素都是指针,可用于指向多个动态分配的内存块;数组指针则指向一个数组,可动态分配和管理大型数据结构。两者结合使用,灵活高效地管理内存。

相关实验场景

更多