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

相关文章
|
7天前
|
存储 算法 程序员
C语言:基础与应用的双重魅力
C语言:基础与应用的双重魅力
|
2月前
|
C语言
在C语言中数组作为函数参数的应用与示例
在C语言中数组作为函数参数的应用与示例
15 0
|
1天前
|
存储 算法 程序员
【C言专栏】C 语言结构体的应用与实践
【4月更文挑战第30天】C语言中的结构体是自定义数据类型的关键,它组合不同类型的數據以创建新类型,尤其适合处理复杂对象如学生信息。通过定义结构体如`struct Student`,包含名字、学号和成绩,可以方便地实例化和访问成员。结构体在链表实现、函数参数传递和数组中都有广泛应用,如表示链表节点和处理批量数据。理解并熟练运用结构体对于C语言编程至关重要,能提升代码效率和可读性。
|
6天前
|
存储 算法 程序员
C语言:深入探索与实战应用
C语言:深入探索与实战应用
12 0
|
7天前
|
C语言
条件操作符和逻辑操作符(C语言零基础教程)
条件操作符和逻辑操作符(C语言零基础教程)
|
7天前
|
C语言
if语句的应用(C语言零基础教程)
if语句的应用(C语言零基础教程)
|
8天前
|
C语言
C语言中逻辑表达式的深入探讨
C语言中逻辑表达式的深入探讨
19 0
|
1月前
|
C语言 索引
基于C语言的函数指针应用-消息命令处理框架
基于C语言的函数指针应用-消息命令处理框架
11 0
|
1月前
|
Linux 测试技术 C语言
【Linux】应用编程之C语言文件操作
【Linux】应用编程之C语言文件操作
|
2月前
|
小程序 C语言
【C语言】输入一个十进制正整数,将它对应的二进制数的各位逆序,形成新的十进制数输出。题目分析及拓展应用。
【C语言】输入一个十进制正整数,将它对应的二进制数的各位逆序,形成新的十进制数输出。题目分析及拓展应用。
27 0