应该为False时返回True(C;使用函数)

时间:2017-07-06 22:03:39

标签: c function scope cs50

我第一次使用函数而且我正在尝试一个简单的练习问题 - 我没有看到这个具体问题已经得到解答但是如果我能指出正确的方向我真的很感激。

它在很大程度上起作用,如果满足第一和第三个条件,我分别返回1和0,但是当我为三角形输入负数或0时,我得到0返回。我一直在寻找可变范围,但我确保重新定义有效性以避免局部变量问题。有人知道为什么输入负数或0边长会返回true吗?

非常感谢。

#include <stdio.h>
#include <cs50.h>

bool validtriangle(float x, float y, float z);

int main(void)
{
    printf ("Give one side of the triangle: \n");
    float a = get_float();

    printf ("Give a second side of the triangle: \n");
    float b = get_float();

    printf ("Give a third side of the triangle: \n");
    float c = get_float();

    bool validify; 
    validify = validtriangle(a, b, c);

    printf("%i\n", validify);
}

bool validtriangle(float x, float y, float z)
{
    if (x+y <= z || z+y <= x || x+z <= y)
    { 
        return false;
    }
    if (x <= 0 || y <= 0 || z <= 0)
    { 
        return false;
    }
    return true;
}

2 个答案:

答案 0 :(得分:1)

“有人知道为什么输入负数或0边长会返回true?”

它在评论中被淹没 - 0意思是假,不是零意味着

答案 1 :(得分:0)

函数返回它返回的原因的简单原因是因为逻辑已经这样写了。如果函数在某些输入值的情况下应该返回不同的东西,那么必须调整逻辑。

我没有详细介绍您的具体问题,但建议您再次检查逻辑。我有时甚至用笔和纸来制作真值表,以找出确切的条件。