正文

2005年6月20日 第24期电脑报 编程点将台2005-06-26 17:30:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/xiangyu/2119.html

分享到:

上周的电脑报因为回家到昨天才拿到报纸,把里面的编程点将做了一下,现在贴出来,以享读者。(这周的题目好像有点过分简单了,^_^)

呵呵,突然发现这道题在我收集的C语言程序百例里面的第50题就是,但里面的编码好像没有我的简单明了,大家可以比较参考一下。

题目:张三说李四在说谎,李四说王五在说谎,王五说张三和李四都在说谎。
现在问:这三人中到底谁说的是真话,谁说的是假话?

安安注:源程序写的不是很规范,其中有一语句还错了,谢谢“波涛 ”的提醒。

我的程序:

/*算法思想:
题目用整型zhs、lis、waw分别表示张三、李四和王五,
数值1表示说真话,数值0表示说谎。
由题目可知,张三和李四互逆,也就是张三说谎则李四说真,反之;
李四和王五互逆,因此lis=!zhs,waw=!lis。
采用C++编程,在VC++6.0上通过运行,
结果:李四说真话;张三和王五说假话
*/

#include<iostream>
using namespace std;
int main()
{
    int i,zhs,lis,waw;
    for(i=0;i<2;i++)
    {
        zhs=i;
        lis=!zhs;
        waw=!lis;
        if(waw==1&&zhs==0&&lis==0)//原来错了,谢谢“波涛 ”的提醒。
            cout<<"王五说真话;张三和李四说谎"<<endl;
        if(waw==0&&(zhs==1||lis==1))
        {
            if(zhs==1)
                cout<<"张三说真话;李四和王五说假话"<<endl;
             else cout<<"李四说真话;张三和王五说假话"<<endl;
        }
    }

    return 0;
}

阅读(5878) | 评论(3)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册