c语言 张三说李四在说谎,李四说王五在说谎,王五说张三和李四 都在说谎,问这三个人中谁在说谎.

for (z=1;z<=0;z--)
{
w=z;
l=(!z);

w1=(!z)+(!l);
if (w1==w)
{
printf("张三真");
}else
{
printf("张三假");
}
}

为什么没有结果出来呢?是不是哪儿错了?
#include <stdio.h>
void main()
{
int z,l,w;

for (z=0;z<=1;z++)
{
for (l=0;l<=1;l++)
{
for (w=0;w<=1;w++)
{
if(w==z&&z!=l&&l!=w!=z)
{
printf("张三假,李四真,王五假\n");
}
}
}
}
}
给我看看我写的这个对吗?谢了!!!!

第1个回答  2021-04-09
嗯嗯1)若张三说真话,由于张三说:“李四在说谎”,可推知李四说谎;而李四说:“王五在说谎”.由于李四说谎,则王五说的是真话;又由于王五说:“张三和李四都在说谎”.可知张三与李四都说谎,与假设张三说真话矛盾.

  (2)若张三说谎,由于张三说“李四在说谎”.可知李四说真话;李四说:“王五在说谎”,知王五说谎;王五说:“张三和李四都在说谎”.由于王五说谎,可知张三与李四都说真话,或张三说谎李四说真话或张三说真话李四说谎话三种情况中有一种成立,都可说明王五说的张三、李四全都说谎是假的,因为在这三种情况中至少有一人说谎是假的,可以选出张三说谎,李四说真话,王五说谎符合题意.

  结论为:张三、王五说的是谎话,李四说的是真话.
第2个回答  2011-11-19
张三真
相似回答