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

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

img

#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;
}

看不懂啊。五个常用的逻辑联结词 是什么

我的意思是说用C语言写出图中真值表并且判断后面的公式是否等价,麻烦了各位

1.非P简单,就是P取反嘛,如果p是bool类型那么p=!p;如果p是int类型那么P=1-P
2.析取就是与,p && q
3.合取就是或,p || q
4.等价就是p==q,但是感觉你图里的答案好像不对,怎么p<->q和p^q的结果相同呢
5.条件公式是什么?