#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 0;
#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;
}