c语言程序中的逻辑问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 00:46:04
有A、B、C、D四名偷窃嫌疑犯,其中一人是小偷,审问中,A说:"我不是小偷。”B说:“C是小偷。”
C说:“小偷肯定是D。”D说:“C在冤枉人”。有三人说真话。一人说假话,问谁是小偷。

#include <stdio.h>
void main()
{
int a,b,c,d;
for(a=0;a<2;a++)
for(b=0;b<2;b++)
for(c=0;c<2;c++)
for(d=0;d<2;d++)
if((a==b&&b==c)||(a==b&&b==d)||(a==c&&c==d)||(b==c&&c==d))
if(c!=d&&c!=b)
printf("%d,%d,%d,%d\n",a,b,c,d);
}
第一个if语句说明:a,b,c,d只能三个数相同
第二个if语句说明c和b不能同时为真,c和d不能同时为真

C是小偷。
首先,我们假设A说的是假话,那么另三个人说的就应该是真话,因为题目说了,一个人说假话,三个人说真话,结果发现,设A说假话不成立。再假设B,也不成立,只有C说假话时成立,得出C说的是假话,那么B说的就是真话,B说C是小偷,所以答案是C

c是小偷...呵呵

c 是小偷