美文网首页
酷叮猫课堂:C语言-谁在说谎问题

酷叮猫课堂:C语言-谁在说谎问题

作者: 酷叮猫少儿编程 | 来源:发表于2019-01-18 15:41 被阅读0次

问题描述

现有张三、李四和王五3个人,张三说李四在说谎,李四说王五在说谎,而王五说张三和李四两人都在说谎。要求编程求出这3个人中到底谁说的是真话,谁说的是假话。

问题分析

显然该题是一个逻辑推断问题。张三、李四和王五3个人都可能说真话,也都可能说假话,那么如何来判断他们到底谁在说谎呢?

由问题描述可得到如下3个结论:

由于“张三说李四在说谎”,因此,如果张三说的是真话,则李四就在说谎;反之,如果张三在说谎,则李四说的就是真话。

由于“李四说王五在说谎”,因此,如果李四说的是真话,则王五就在说谎;反之,如果李四在说谎,则王五说的就是真话。

由于“王五说张三和李四两人都在说谎”,因此,如果王五说的是真话,则张三和李四两人都在说谎;反之,如果王五在说谎,则张三和李四两人至少一人说的是真话。

算法设计

该问题同样可用穷举法进行解决。

首先将问题分析中得到的3个分析结果用表达式表达出来。用变量x、y和z分别表示张三、李四和王五3人说话真假的情况,当x、y或z的值为1时表示该人说的是真话,值为0时表示该人说的是假话。则问题分析中的3个结论可以使用如下的表达式进行表示:

x==1 && y==0   表示张三说的是真话,李四在说谎;

x==0 && y==1   表示张三在说谎,李四说的是真话;

y==1 && z==0   表示李四说的是真话,王五在说谎;

y==0 && z==1   表示李四在说谎,王五说的是真话;

z==1 && x==0 && y==0   表示王五说的是真话,则张三和李四两人都在说谎;

z==0 && (x+y)!=0   表示王五在说谎,则张三和李四两人至少一人说的是真话。

在C语言中,可以使用一个逻辑表达式来表达出一个复杂的关系。将上面的表达式进行整理获得C语言的表达式如下:

(x&&!y || !x&&y) && (y&&!z || !y&&z) && (z&&x+y==0 || !z&&x+y!=0)

下面是完整的代码:

#include

int main()

{

    int x, y, z;

    for(x=0; x<=1; x++)

        for(y=0; y<=1; y++)

            for(z=0; z<=1; z++)

                if( ((x&&!y) || (!x&&y)) && ((y&&!z) || (!y&&z)) && ((z&&x==0&&y==0) || (!z&&x+y!=0)) )

                {

                    printf("张三说的是%s. ",x?"真话":"假话");

                    printf("李四说的是%s. ",y?"真话":"假话");

                    printf("王五说的是%s. ",z?"真话":"假话");

                }

    return 0;

}

相关文章

  • 酷叮猫课堂:C语言-谁在说谎问题

    问题描述 现有张三、李四和王五3个人,张三说李四在说谎,李四说王五在说谎,而王五说张三和李四两人都在说谎。要求编程...

  • 酷叮猫C语言课堂-狼追兔子问题

    问题描述 一只兔子躲进了10个环形分布的洞中的一个。狼在第一个洞中没有找到兔子,就隔一个洞,到第3个洞去找;也没有...

  • 酷叮猫Python课堂 - 蛇形填数

    [题目] 在n * n 的方阵里填入1,2,3.....n * n,要求填成蛇形. 要求 n<=8 [输出] 例如...

  • 酷叮猫Python课堂 - 99乘法表

    相信大家都会背诵九九乘法表,有了这个口诀,我们在算一些数时会非常方便。那么,你知道如何用Python编程输出一个乘...

  • 酷叮猫课堂-Python隐藏彩蛋(“反重力”漫画)

    当一门编程语言是开源的时候,往往会有产生一些搞笑和有趣的东西。通常,这意味着社区的贡献者会为该语言添加一些有趣和特...

  • 谁在说谎

    引子: 一个冬天的周末,阿勤和秋叶走进电影院。 阿勤是一个教育机构的销售,平时跑跑市场联络客户,至于爱好也很普通,...

  • 谁在说谎

    下午三点多,菜市场忽然闹吵吵的,正巧店里没顾客,我出去看热闹。 一个五十多岁的卷发女人和一个卖青菜的...

  • 谁在说谎?

    谁在说谎?今天,我遭遇了罗生门。 事情并不复杂。下课了,该到学生跑操的时候,我因为脚的问题,没有下去,但是,我去了...

  • 谁在说谎

    昨天第一次听到故事的另一个版本。而且,从小在我眼里就不会撒谎的外公也提供了证词。 妈妈是喝农药走的,关...

  • 谁在说谎?

    路上有很多人,他们都朝着同一个方向,行色匆匆。 这场面让葛天有些诧异,来冀北野游也不是第一次了,这种荒郊野外之地,...

网友评论

      本文标题:酷叮猫课堂:C语言-谁在说谎问题

      本文链接:https://www.haomeiwen.com/subject/ckmndqtx.html