逻辑推理题(谁是小偷)警察局抓了 a b c d四名偷窃嫌疑犯,其中一个是小偷, a 说:我不是小偷
b说:c是小偷c说:小偷肯定是dd说:c冤枉人已知四人中有三个人说了真话,一人说了假话。问到底谁是小偷?请编写一段代码得出结果。(c或c++)...
b 说:c是小偷
c说: 小偷肯定是d
d说: c冤枉人
已知四人中有三个人说了真话,一人说了假话。问到底谁是小偷?
请编写一段代码得出结果。(c或c++) 展开
c说: 小偷肯定是d
d说: c冤枉人
已知四人中有三个人说了真话,一人说了假话。问到底谁是小偷?
请编写一段代码得出结果。(c或c++) 展开
2个回答
展开全部
#include<stdio.h>
#include<conio.h>
main()
{
int a[5],h[5],i; //h数组代表4个人说的是真话还是假话,a数组表示a,b,c,d
for (i=1;i<=4;i++)
{
h[1]=h[2]=h[3]=h[4]=1; //默认4个人都是真话
a[1]=a[2]=a[3]=a[4]=0; //默认4个人都不是小偷
h[i]=0; //选择其中1人说假话
if (h[4]==1) {h[3]=0;} else {h[3]=1;} //因为这个是对其他真假话的判断,会影响下面的判断,所以要放最前面
if (h[1]==1) {a[1]=0;} else {a[1]=1;}
if (h[2]==1) {a[3]=1;} else {a[3]=0;}
if (h[3]==1) {a[4]=1;} else {a[4]=0;}
if ((a[1]+a[2]+a[3]+a[4])==1) //等于1就是只有1个小偷,其他都是0(不是小偷)
{
for (i=1;i<=4;i++)
{
if (a[i]==1) {printf("%d\n",i);} //输出小偷
}
}
}
getch();
return 0;
}
#include<conio.h>
main()
{
int a[5],h[5],i; //h数组代表4个人说的是真话还是假话,a数组表示a,b,c,d
for (i=1;i<=4;i++)
{
h[1]=h[2]=h[3]=h[4]=1; //默认4个人都是真话
a[1]=a[2]=a[3]=a[4]=0; //默认4个人都不是小偷
h[i]=0; //选择其中1人说假话
if (h[4]==1) {h[3]=0;} else {h[3]=1;} //因为这个是对其他真假话的判断,会影响下面的判断,所以要放最前面
if (h[1]==1) {a[1]=0;} else {a[1]=1;}
if (h[2]==1) {a[3]=1;} else {a[3]=0;}
if (h[3]==1) {a[4]=1;} else {a[4]=0;}
if ((a[1]+a[2]+a[3]+a[4])==1) //等于1就是只有1个小偷,其他都是0(不是小偷)
{
for (i=1;i<=4;i++)
{
if (a[i]==1) {printf("%d\n",i);} //输出小偷
}
}
}
getch();
return 0;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C是小偷不用说啦
追问
我要的是编码实现,推理还是很简单的啦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
您可能需要的服务
百度律临官方认证律师咨询
平均3分钟响应
|
问题解决率99%
|
24小时在线
立即免费咨询律师
15707人正在获得一对一解答
福州梦中仙子3分钟前提交了问题
上海旋风骑士2分钟前提交了问题
大连海浪之心6分钟前提交了问题