易笠筠 2022-09-26 09:34 采纳率: 33.3%
浏览 251
已结题

纯C语言设计离散数学的真值表和判断是否等价

实现五个常用的逻辑联结词的基本功能,通过程序调用,完成至少3个命题变元的命题公式真值表的设计;并给出两个命题公式,判断它们是否等价。上传程序代码。最好明天中午之前

img

  • 写回答

5条回答 默认 最新

  • 日向晚,声声慢 2022-09-26 13:07
    关注
    #include<stdio.h>
    
    int No(int p)
    {
        return !p;
    }
    
    //p->q
    int Condition(int p, int q)
    {
        if (p == 1 && q == 0)
            return 0;
        else
            return 1;
    }
    
    //p<->q
    int TowCondition(int p, int q)
    {
        if (p == q)
            return 1;
        else
            return 0;
    }
    
    //p^q
    int Conjunction(int p,int  q)
    {
        return p && q;
    }
    
    //p v q
    int Disjunction(int p, int  q)
    {
        return p || q;
    }
    
    
    //等值判断 也可以用上面的函数 TowCondition 去判断
    int Same(int p, int q)
    {
        if (p == q)
            return 1;
        else
            return 0;
    }
    int TrueTable(int num)
    {
        //对应真值表
        int r = num % 2; 
        num /= 2;
        int q = num % 2;
        num /= 2;
        int p = num % 2;
        printf("%-6d\t", p);
        printf("%-6d\t", q);
        printf("%-6d\t", r);
    
        //"7p", "p->q", "p<->q", "p^q", "pvq", "pvq->r", "7p^pvr"
        //非  "7p" 
        int a = No(p);
        printf("%-6d\t", a);
    
        //条件  "p->q"
        int b = Condition(p, q);
        printf("%-6d\t", b);
    
        //双条件 "p<->q"
        int c = TowCondition(p,q);
        printf("%-6d\t", c);
    
        //合取 "p^q"
         int d = Conjunction(p, q);
         printf("%-6d\t", d);
    
        //析取 "pvq"
        int e = Disjunction(p, q);
        printf("%-6d\t", e);
    
        //"pvq -> r"   pvq-e
        b = Condition(e, r);
        printf("%-6d\t", b);
    
        
        //  pvr - e
        e = Disjunction(p, r);
    
        // "7p ^ pvr"  a - 7p
        d = Conjunction(a, e);
        printf("%-6d\t", d);
    
        //等值结果 b:pvq -> r   d:7p ^ pvr
        int g = Same(b, d);
        //printf("%-6d\t", g);
        printf("\n");
        if (g == 1)
        {
            return 1;
        }
        else
            return 0;
    
    }
    
    int main()
    {
        printf("%-6c\t%-6c\t%-6c\t%-6s\t%-6s\t%-6s\t%-6s\t%-6s\t%-6s\t%-6s\t", 'p',
            'q', 'r', "7p", "p->q", "p<->q", "p^q", "pvq", "pvq->r","7p^pvr");
        printf("\n");
        int i = 0;
        int ret = 0;
        int sum = 0;
        for (i = 0; i < 8; i++)
        {
            ret = TrueTable(i);
            sum += ret;
        }
        if (sum == 8)
            printf("等价");
        else
            printf("不等价");
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 10月4日
  • 已采纳回答 9月26日
  • 创建了问题 9月26日

悬赏问题

  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 angular开发过程中,想要读取模型文件,即图1的335行,会报404错误(如图2)。但我的springboot里配置了静态资源文件,如图3。且在该地址下我有模型文件如图4,请问该问题该如何解决呢?
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥100 H5网页如何调用微信扫一扫功能?
  • ¥15 讲解电路图,付费求解
  • ¥15 有偿请教计算电磁学的问题涉及到空间中时域UTD和FDTD算法结合的
  • ¥15 vite打包后,页面出现h.createElement is not a function,但本地运行正常
  • ¥15 Java,消息推送配置