#include<stdio.h>
int isreal(int,int,int);
int main()
{
int p[3];//假使说谎值为0 没说谎值为1 3人实际就是000~111的二进制数组合
char *szhang3="真话",*sli4="真话",*swang5="真话";
p[0]=0;p[1]=0;p[2]=0;
while(1)
{
if(isreal(p[0],p[1],p[2])==1)
{
if(p[0]==0)
{
szhang3="假话";
}
if(p[1]==0)
{
sli4="假话";
}
if(p[2]==0)
{
swang5="假话";
}
printf("张三说的是%s,李四说的是%s,王五说的是%s",szhang3,sli4,swang5);
}
if(++p[2]>1)
{
p[2]=0;
if(++p[1]>1)
{
p[1]=0;
if(++p[0]>1)
{
p[0]=0;
}
}
}
if(p[0]==0 && p[1]==0 && p[2]==0)
{
break;
}
}
return 1;
}
int isreal(int zhang3,int li4,int wang5) //把三人假定值传入,返回1假设成立; 返回0假设不成立
{
if(zhang3!=li4 && li4!=wang5 && wang5!=(zhang3+li4))
{
return 1;
}
return 0;
}
温馨提示:内容为网友见解,仅供参考