第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