C语言逻辑推理例题(附答案)
好心情美文网-severely歌词
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
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(
}
system(“pause”);
}
参考答案:(2)
#include
1
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
#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(
}
system(
}
习题
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
printf(
}
}
}
}
system(
2
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
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,l
4,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++)
{if(y==f||o==f) continue;
for(m=1;m<=5;m++)
{if(y==m||o==m||f==m) continue;
{ d=15-y-o-f-m;
l1=(o==3)+(m==2);
*3号是欧洲,2号是美洲*
l2=(y==4)+(d==2);
*4号是亚洲,2号是大洋洲*
l3=(y==1)+(f==5);
*1号是亚洲,5号是非洲*
l4=(f==4)+(d==3);
*4号是非洲,3号是大洋洲*
l5=(o==2)+(m==5);
*2号是欧洲,5号是美洲*
if(l1==1&&l2==1&&l3==1&&l4==1&&l5==1)*如果都成立*
printf(输出结果*
}
}
}
}
system(
}
3、 甲、乙、丙三人,一个人
喜欢看足球,一个人喜欢看拳击,一个人喜欢看篮球。已知甲
不爱看篮球,丙既不喜欢看篮球又不喜欢看
足球。现有足球、拳击、篮球比赛的入场券
各一张,请你根据他们的爱好,把票分给他们。
参考答案:
#include
#include
3
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
main()
{
short a,b,c,l1,l2;
for(a=1;a<=3;a++)
for(b=1;b<=3;b++)
for(c=1;c<=3;c++)
{ l1=a!=3;
l2=c==2;
if(l1+l2==2&&a!=b&&a!=c&&b!=c)
表篮球)n
}
system(
}
printf(甲:%d,乙:%d,丙:%d(1代表足球,2代表拳击,3代
4