求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"); 
                } 

解决方案 »

  1.   

    int a,b,c; 
    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个情况,结果就出来了