美文网首页
谁在说谎

谁在说谎

作者: 一路向后 | 来源:发表于2021-12-08 21:46 被阅读0次

    1.问题描述

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

    2.源码实现

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    short isMatch(int a, int b, int c)
    {
        if(a == 1 && b == 1)
        {
            return 0;
        }
    
        if(a == 0 && b == 0)
        {
            return 0;
        }
    
        if(b == 1 && c == 1)
        {
            return 0;
        }
    
        if(b == 0 && c == 0)
        {
            return 0;
        }
    
        if(c == 1 && (!(a == 0 && b == 0)))
        {
            return 0;
        }
    
        if(c == 0 && (a == 0 && b == 0))
        {
            return 0;
        }
    
        return 1;
    }
    
    int main()
    {
        int a = 0, b = 0, c = 0;
        int q[3] = {0};
        int i, j = 0;
    
        for(i=0; i<8; i++)
        {
            q[0] = (i & 1);
            q[1] = ((i >> 1) & 1);
            q[2] = ((i >> 2) & 1);
    
            if(isMatch(q[0], q[1], q[2]))
            {
                a = q[0];
                b = q[1];
                c = q[2];
    
                j++;
            }
        }
    
        printf("probability = %d\n", j);
    
        printf("张三说的是%s\n", a ? "真话" : "假话");
        printf("李四说的是%s\n", b ? "真话" : "假话");
        printf("王五说的是%s\n", c ? "真话" : "假话");
    
        return 0;
    }
    

    3.编译源码

    $ gcc -o test test.c -std=c89
    

    4.运行及其结果

    $ ./test
    probability = 1
    张三说的是假话
    李四说的是真话
    王五说的是假话
    

    相关文章

      网友评论

          本文标题:谁在说谎

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