首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请求高手帮小弟我分析一道程序.

2012-02-08 
请求高手帮我分析一道程序.题目:谜语博士遇到四个人,知道他们可能是来自诚实族或是说谎族的,为了调查这四

请求高手帮我分析一道程序.
题目:
谜语博士遇到四个人,知道他们可能是来自诚实族或是说谎族的,为了调查这四个人是什么族的,博士照例进行询问:"你们是什么族的?"
   第一个人说:"我们四个人中都是说谎族的."
   第二个人说:"我们四个人之中只有一人是说谎族的."
   第三个人说:"我们四个人中有两个是说谎族的."
   第四个人说:"我是说谎族的."
问自称是"诚实族"的第四个人是否真是诚实族的?
 
程序:

#include   <stdio.h>
void   main()
{
int   a,b,c,d;
for(a=0;a <2;a++)
for(b=0;b <2;b++)
for(c=0;c <2;c++)
for(d=0;d <2;d++)
if(a+b+c+d==0&&a+b+c+d==3&&a+b+c+d==2)
{
printf( "The   first   pelpeo   is   %s\n ",   a?   "honest "   :   "lier ");
printf( "The   second   pelpeo   is   %s\n ",   b?   "honest "   :   "lier ");
printf( "The   thirst   pelpeo   is   %s\n ",   c?   "honest "   :   "lier ");
}
else   if(d==1&&a+b+c+d==1)
printf( "The   forth   pelpeo   is   %s\n ", "honest ");


}
可以帮我分析一下这道程序吗?或者给出你的见解!
在这里谢谢了!!!

[解决办法]
这段代码是有问题的了。
if(a+b+c+d==0&&a+b+c+d==3&&a+b+c+d==2) 这个条件怎么可能符合呢
[解决办法]
我把条件改成
if(((a+b+c+d==0&&a==1)||(a+b+c+d!=0&&a==0))&&((b==1&&a+b+c+d==3)||(b==0&&a+b+c+d!=3))&&((c==1&&a+b+c+d==2)||(c==0&&a+b+c+d!=2)))
如果a是说的是对的,那么a是诚实的.以此类推,而且你的题目都写错了。第四个人是说:"我是诚实族的吧".
[解决办法]
呵呵,程序判断下面的也改了。
#include <stdio.h>
void main()
{
int a,b,c,d;
for(a=0;a <2;a++)
for(b=0;b <2;b++)
for(c=0;c <2;c++)
for(d=0;d <2;d++)
if(((a+b+c+d==0&&a==1)||(a+b+c+d!=0&&a==0))&&((b==1&&a+b+c+d==3)||(b==0&&a+b+c+d!=3))&&((c==1&&a+b+c+d==2)||(c==0&&a+b+c+d!=2)))
{
printf( "The first pelpeo is %s\n ", a? "honest " : "lier ");
printf( "The second pelpeo is %s\n ", b? "honest " : "lier ");
printf( "The thirst pelpeo is %s\n ", c? "honest " : "lier ");
printf( "The forth people is %s\n ", d? "honest ": "lier ");
printf( "\n ");
}
}
[解决办法]
不明白你是什么意思。。。
[解决办法]
老大,那两种结果中第四个人是诚实族的啊。.这点都没想明白..我运行的结果是1.第四个人是诚实的.2.第三和四个人都是诚实的.你再想想看吧..

热点排行