实验二

命题逻辑推理


实验二 命题逻辑推理


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

实验用例:根据下面的命题,试用逻辑推理方法确定谁是作案者,写出推理过程。
1. 营业员A或B偷了手表;
2. 若A作案,则作案不在营业时间;
3. 若B提供的证据正确,则货柜末上锁;
4. 若B提供的证据不正确,则作案发生在营业时间;
5. 货柜上了锁。 \

【实验原理和方法】

  • (1)符号化上面的命题,将它们作为条件,营业员A偷了手表作为结论,得一个复合命题。
  • (2)将复合命题中要用到的联结词定义成C语言中的函数,用变量表示相应的命题变元。将复合命题写成一个函数表达式。
  • (3)函数表达式中的变量赋初值1。如果函数表达式的值为1,则结论有效, A偷了手表,否则是B偷了手表。

用命题题变元表示:

  • A:营业员A偷了手表
  • B:营业员B偷了手表
  • C:作案不在营业时间
  • D:B提供的证据正确
  • E:货柜末上锁

则上面的命题符号化为

  • (A||B) && (!A||C) && (!D||E) && (D||!C) && !E

要求找到满足上面式子的变元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++)
                        //(A || B)A作案或者b作案
                        //(!A || C)A没有作案或者作案不在营业时间
                        //(!D || E)B提供的证据不正确或者货柜未上锁
                        //(D || !C)B提供的证据正确或作案在营业时间
                        // !E货柜上锁了
                        if((A || B) && (!A || C) && (!D || E) && (D || !C) && !E)
                            printf("A:%d,B:%d",A,B);
}

运行结果 A=0,B=1

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值