c语言逻辑或的例子,C语言逻辑推理的例子.doc

C语言逻辑推理的例子

C语言逻辑推理例题(多重循环)

例1明明找不到铅笔盒了,妈妈对他说:“我把铅笔盒放到三个抽屉中的一个抽屉里了,每个抽屉上都写了一句话。不过,其中只有一句话是真的。”明明看到的三句话是:

左边抽屉:“铅笔盒不在这里”;

中间抽屉:“铅笔盒不在这里”;

右边抽屉:“铅笔盒在左边的抽屉”;

例2甲、乙、丙、丁四人参加一次数学竞赛。赛后,他们四人预测名次的谈话如下:

甲说:“丙得第一,我第三名”;

乙说:“我第一名,丁第四名”

丙说:“丁第二名,我第三名”

丁没说话。

当最后结果公布时发现,甲乙丙都只说对了一半,请给出正确的四人名次。

例3一位法官在审理一起盗窃案时,对涉及到的四名嫌疑犯A、B、C、D进行了审问。四人分别供述如下:

A:“罪犯在B、C、D三人之中。”

B:“我没有作案,是C偷的。”

C:“在A和D中间有一个是罪犯。”

D:“B说的是事实”

经过充分的调查,证实四人中只有两人说了真话,并且罪犯只有一个。请确定真正的罪犯。

参考答案:(1)

#include

#include

main()

{

short a,b,c,d,l1,l2,l3,l4;

for(a=0;a<=1;a++)

for(b=0;b<=1;b++)

for(c=0;c<=1;c++)

for(d=0;d<=1;d++)

{ l1=(b+c+d==1);

l2=(!b&&c);

l3=(a+d==1);

l4=l2;

if(l1+l2+l3+l4==2&&a+b+c+d==1)

printf("%d,%d,%d,%d\n",a,b,c,d);

}

system(“pause”);

}

参考答案:(2)

#include

#include

main()

{

short a,b,c,d,j,t;

for(j=0;j<=15;j++)

{ a=(j&8)>>3;b=(j&4)>>2;c=(j&2)>>1;d=j&1;

t=(b+c+d==1)+(!b&&c)+(a+d==1)+(!b&&c);

if(t==2&&a+b+c+d==1)

printf("%d,%d,%d,%d\n",a,b,c,d);

}

system("pause");

}

习题

1、小狗、小兔、小猫、小猴和小鹿参加百米赛跑,比赛结束后,

小猴说:“我比小猫跑得快。”

小狗说:“小鹿在我的前面冲过了终点线。”

小兔说:“我的名次排在小猴的前面,小狗的后面。”

请根据他们的回答排出名次。

参考答案:

#include

#include

main()

{

short a,b,c,d,e,l1,l2,l3; /*a,b,c,d,e分别代表小狗,小兔,小猫,小猴,小鹿*/

for(a=1;a<=5;a++)

for(b=1;b<=5;b++)

{if(a==b) continue;

for(c=1;c<=5;c++)

{if(a==c||b==c) continue;

for(d=1;d<=5;d++)

{ if(a==d||b==d||c==d) continue;

{ e=15-a-b-c-d;

l1=(d

l2=(e

l3=(b

if(l1+l2+l3==3)

printf("%d,%d,%d,%d,%d\n",a,b,c,d,e);

}

}

}

}

system("pause");

}

2、地理老师在黑板上挂了一张世界地图,并给五大洲的每一个洲都标上了一个代号,让同学们认出五大洲。五名学生分别回答如下:

甲:3号是欧洲,2号是美洲;

乙:4号是亚洲,2号是大洋洲;

丙:1号是亚洲,5号是非洲;

丁:4号是非洲,3号是大洋洲;

戊:2号是欧洲,5号是美洲。

老师说他们没人都只说对了一半,请问1~5号分别代表哪个洲?

参考答案:

#include

#include

main()

{

short y,o,f,m,d,l1,l2,l3,l4,l5;/*y,o,f,m,d分别是亚洲,欧洲,非洲,美洲和大洋洲的首字母*/

for(y=1;y<=5;y++)

for(o=1;o<=5;o++)

{if(y==o) continue;

for(f=1;f<=5;f++)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值