求C语言高手帮我翻译下这段程序!~本人新手,题目是:张三说李四在说谎,李四说王五在说谎,王五说张三和李四都在说谎。现在问:这三人中到底谁说的是真话,谁说的是假话?程序无误,只求程序的全部解释(注释)程序如下
#include<stdio.h>
void main()
{
int a,b,c;
for(a=0;a<=1;a++)
for(b=0;b<=1;b++)
for(c=0;c<=1;c++)
if((a&&!b||!a&&b)&&(b&&!c||!b&&c)&&(c&&a+b==0||!c&&a+b!=0))
{
printf("Zhangsan told a %s.\n",a?"truth":"lie");
printf("Lisi told a %s.\n",b?"truth":"lie");
printf("Wangwu told a %s.\n",c?"truth":"lie");
}
}
#include<stdio.h>
void main()
{
int a,b,c;
for(a=0;a<=1;a++)
for(b=0;b<=1;b++)
for(c=0;c<=1;c++)
if((a&&!b||!a&&b)&&(b&&!c||!b&&c)&&(c&&a+b==0||!c&&a+b!=0))
{
printf("Zhangsan told a %s.\n",a?"truth":"lie");
printf("Lisi told a %s.\n",b?"truth":"lie");
printf("Wangwu told a %s.\n",c?"truth":"lie");
}
}
a,b,c代表三个人
for(a=0;a<=1;a++)
for(b=0;b<=1;b++)
for(c=0;c<=1;c++)
0代表说谎,1代表说真话
每个人都只有要么说谎要么真话
if( (a&&!b||!a&&b) && (b&&!c||!b&&c) && (c&&a+b==0||!c&&a+b!=0) )
1.a真话那么b就是谎话或者a谎话那么b是真话
2.b真话那么c就是谎话或者b谎话那么c是真话
3.c真话那么a和b都是谎话,c是谎话那么a和b至少有一个是谎话
那么如果满足上面3个情况,结果就出来了