【问题标题】:Write logical expression which is true [closed]写出正确的逻辑表达式[关闭]
【发布时间】:2020-04-12 00:59:49
【问题描述】:

写出最多两个数 A、B、C 为非正数时为真的逻辑表达式。你能回答这个吗?

老师说答案是 !(A =< 0 && B =< 0 && C <= 0)A > 0 || B > 0 || C > 0.

我还是没听懂她的回答,你能帮帮我吗?

【问题讨论】:

  • 你为什么不问问她?
  • Write logical expression that is true when at most two numbers A, B, C are nonpositive. == Write logical expression that is true when at least one number is greater than zero.
  • 如果三个数中最多有两个为非正数,则表达式为真,那么只有三个数都为负数时,它才可能为假。
  • A =< 0 不是有效的 C++。也许是A <= 0

标签: c++ c++11 c++14


【解决方案1】:

现在,问题表明 A、B、C 中最多有 2 个是非正数。因此,这意味着包含 3 个数字并返回 true 的条件将是 1.

!(A =< 0 && B =< 0 && C <= 0)

在这里,我们知道 A、B 或 C 中的任何一个都大于 0。因此,它将返回 true。 2.

A > 0 || B > 0 || C > 0

在这里,同样的原因会成立,并且至少其中一个会返回 true。

【讨论】:

  • A =&lt; 0 不是有效的 C++。如果表达式编写正确(A result 将为真。表达式不返回值; 函数返回值。
【解决方案2】:

你的老师应用了德摩根定律:

not (A or B) = not A and not B; 

not (A and B) = not A or not B

请查看https://en.wikipedia.org/wiki/De_Morgan%27s_laws 以获得完整说明

【讨论】:

    【解决方案3】:

    工作代码。

    #include <iostream>
    using namespace std;
    
    //Function for logic
    
    bool myFun(int a,int b,int c)
    {
    
        bool conditionFirst=!(a <= 0 && b <= 0 && c <= 0);
    
        bool condintionSecond=(a > 0 || b > 0 || c > 0);
    
        if(conditionFirst==true && condintionSecond==true)
        return true;
        else
        return false;
    
    }
    
    int main() {
        int a,b,c;
        cin>>a>>b>>c;
        if(myFun(a,b,c))
        cout<<"True";
        else
        cout<<"False";
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-17
      • 1970-01-01
      相关资源
      最近更新 更多