第3关:命题逻辑推理

任务描述
相关知识
实验用例
实验原理和方法
编程要求
测试说明
任务描述
本关任务:用命题逻辑推理的方法解决逻辑推理问题。加深对命题逻辑推理方法的理解。

相关知识
为了完成本关任务,你需要掌握:1.命题符号化,2.命题推理。

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

实验原理和方法
1、符号化上面的命题,将它们作为条件,得一个复合命题。
定义命题变元如下:
p: 营业员A偷了手表       q: 营业员B偷了手表
r: 作案在营业时间       s: B提供的证据正确
t: 货柜上锁
则条件符号化为:
(1)p∨q
(2)(略,自行补充)
(3)(略,自行补充)
(4)(略,自行补充)
(5)(略,自行补充)
2、将复合命题中要用到的联结词定义为C语言中的逻辑运算,用变量表示相应的命题变元。将复合命题写成一个逻辑表达式。
例如 p∨q 对应C语言中的p∣∣q。
3、编写程序利用穷举法找出pqrst的一组赋值使得逻辑表达式成立。若p=1则表示A作案,q=1则表示B作案。

编程要求
根据提示,在右侧编辑器补充代码,计算并输出p、q、r、s、t的值。例如,10111

测试说明
平台会对你编写的代码进行测试:

开始你的任务吧,祝你成功!

/*
 * step3.c
 * 
利用命题逻辑求解实际问题
 * 
 */

//p∨q   p->!r  s->!t  !s->r t
//p||q   p==!r||!r=0 s==!t||!t=0   !s==r||r=0   t
//p||q&&p&&!r&&s&&t&&!s&&r&&t
//01101
#include <stdio.h>

int main(int argc, char **argv)
{
	int p,q,r,s,t;

//在下面Begin和End之间补全代码
/*********** Begin ***********/
	for(p=0;p<2;p++)
    for(q=0;q<2;q++)
    for(r=0;r<2;r++)
    for(s=0;s<2;s++)
    for(t=0;t<2;t++)
    {
        if((p||q)&&(!p&&r)&&(!s&&t)&&(!s&&r)&&t)
        {
            printf("%d%d%d%d%d",p,q,r,s,t);
        }
    }


		
/*********** end ***********/

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值