C语言编程: 张三说李四说谎,李四说王五说谎,王五说张三和李四都说谎。问谁真谁假。

如题所述

张三、李四、王五都是假。
真要这么问就是这么回答,因为编程语言就是这么执行的,执行到最后一步,我们不管是谁说,只要能运行就默认执行了,他说了那就是对了,执行到最后一步那就是最后一步了。我用编程语言简单表达:
//我初始化三个人,默认都没说谎
public const string s="没说谎";
public const string l="说谎";
public string 张三=s;
public string 李四=s;
public string 王五=s;
//开始告密事件
private void says()
{
李四=l; //说过了李四是说谎
王五=l; //说过了王五是说谎
张三=l; //说过了张三是说谎
李四=l; //再次赋值说过了李四还是在说谎
print 张三,李四,王五;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-03-01
代码可以直接运行,结果是张三说假话,李四说真话,王五说假话。这里abc分别表示3个人,当变量的值是0时表示对应的人说谎。通过循环把所有情况列出来,排除不符合条件的,剩下的就是真相
#include<stdio.h>

int 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 == 1 && b == 1 )  //张三说真话,李四也说真话
continue ;          //不符合条件,继续下一个循环
if( a == 0 && b == 0 )  //张三、李四都说假话
continue ;
if( b == 1 && c == 1 )  //李四、王五都说真话
continue ;
if( b == 0 && c == 0 )  //李四、王五都说假话
continue ;
if( c == 1 && !( a == 0 && b == 0 ) ) //王五说真话但张三李四没有都说谎
continue ;
if( c == 0 && ( a == 0 && b == 0 ) ) //王五说假话但张三李四没有都说真话
continue ;

if( a == 1 )
printf( "张三说真话 " ) ;
else
printf( "张三说假话 " ) ;
if( b == 1 )
printf( "李四说真话 " ) ;
else
printf( "李四说假话 " ) ;
if( c == 1 )
printf( "王五说真话\n" ) ;
else
printf( "王五说假话\n" ) ;
}

    return 0;  
}

本回答被提问者和网友采纳
第2个回答  2018-02-28
//结果是张三说假话,李四说真话,
//王五说假话。这里abc分别表示3个人,当变量的值是0时表示对应的人说谎。通过循环把所有情况列出来,排除不符合条件的,剩下的就是真相
#include<stdio.h>
 
int 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 == 1 && b == 1 )  //张三说真话,李四也说真话
                    continue ;          //不符合条件,继续下一个循环
                if( a == 0 && b == 0 )  //张三、李四都说假话
                    continue ;
                if( b == 1 && c == 1 )  //李四、王五都说真话
                    continue ;
                if( b == 0 && c == 0 )  //李四、王五都说假话
                    continue ;
                if( c == 1 && !( a == 0 && b == 0 ) ) //王五说真话但张三李四没有都说谎
                    continue ;
                if( c == 0 && ( a == 0 && b == 0 ) ) //王五说假话但张三李四没有都说真话
                    continue ;
 
                if( a == 1 )
                    printf( "张三说真话 " ) ;
                else
                    printf( "张三说假话 " ) ;
                if( b == 1 )
                    printf( "李四说真话 " ) ;
                else
                    printf( "李四说假话 " ) ;
                if( c == 1 )
                    printf( "王五说真话\n" ) ;
                else
                    printf( "王五说假话\n" ) ;
            }

return 0;  
}
张三说假话 李四说真话 王五说假话
Press any key to continue

相似回答