背景:
诚实族和说谎族是来自两个荒岛的不同民族,诚实族的人永远说实话,而说谎族的人永远是假话。柯楠是一个聪明的人,他要来判断所遇到的人分别是哪个民族的。
某天柯楠遇到了三个人,知道他们可能来自诚实族或说谎族。为了调查这三个人是什么族的,柯楠分别问了他们问题。以下是三个人的回答。
问第一个人A:“你们是什么族的?”回答:“我们之中有两个来自诚实族”。第二个人B说:“不要胡说,我们三个人中只有一个诚实族的。”第三人C听了第二个人说的话,符合说:“对,就是只有一个诚实族的。”
柯楠很快知道了他们分别来自哪个民族。你能设计一个程序,看看柯楠是怎么办到的吗?三个人到底分别来自于哪个民族?
输入:
(无)
输出:
分别打印每个人(A、B和C)的信息,每人的信息占一行。比如:如果A是诚实族,则打印格式为:A is a honest. 反之,打印格式为: A is a lier.
#include"stdio.h"
main()
{ int a,b,c,c1=0,c2=0,c3=0;
for(a=0;a<=1;a++)
for(b=0;b<=1;b++)
for(c=0;c<=1;c++)
{ c1=a&&a+b+c==2||!a&&a+b+c==!2;
c2=b&&a+b+c==1||!b&&a+b+c==!1;
c3=c&&a+b+c==1||!c&&a+b+c==!1;
if(c1+c2+c3==3)
{if(a==1) printf("A is a honest.\n");
else printf("A is a lier.\n");
if(b==1) printf("B is a honest.\n");
else printf("B is a lier.\n");
if(c==1) printf("C is a honest.\n");
else printf("C is a lier.\n");
}
}
}
c1,c2,c3 是怎么复值的啊?