【问题标题】:CS50 valid triangle — incorrect code outputCS50 有效三角形 - 错误的代码输出
【发布时间】:2021-07-20 23:41:40
【问题描述】:

下面的代码编译、运行和接受输入,但它没有按预期输出真或假。我不确定我做错了什么。

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

//int add_two_ints(int a, int b);
bool valid_triangle (float a, float b, float c);
int main (void)
{

        float a = get_float("Enter Side 1:");
        float b = get_float("Enter Side 2:");
        float c = get_float("Enter Side 3:");
}

bool valid_triangle (float a, float b, float c)
{   //checks if two sides are greater than one
    if ((a + b <= c) || (a + c <= b) || (b + c <= a))
    {
        return false;
    }

    //checks for positive sides
    if (a <= 0 || b <= 0 || c <= 0 )
    {
        return false;
    }
     //if conditions are met print true
    else
        return true;
}

【问题讨论】:

  • 你不要打电话给valid_triangle
  • 对不起,请您解释一下,对 c/programming 还是很陌生。
  • 您已经定义了一个函数,但您从未调用它。在main 添加bool r = valid_triangle(a, b, c);
  • 调用valid_triangle()后,需要修复函数中的逻辑——超长边的测试不正确(&lt;= vs &gt;)。

标签: c cs50


【解决方案1】:

我认为从我在您的代码中看到的情况来看,您没有调用函数valid_triangle”来查阅它的输出..

【讨论】:

  • 谢谢,我在main中调用了如下函数; valid_triangle (a,b,c); bool result = valid_triangle(a,b,c); printf("%d\n",result) 但是,我得到输出 1 和 0
【解决方案2】:

除非在main 函数中调用,否则代码中的任何内容都不会运行。 main 是您启动代码时运行的内容。

您的valid_triangle 函数仅被定义,告诉其余代码它如何工作以及它接受哪些类型的值,但除非被调用,否则它不会运行。在main 中添加对valid_triangle 函数的调用,它将根据其定义执行该函数。

int main (void)
{

        float a = get_float("Enter Side 1:");
        float b = get_float("Enter Side 2:");
        float c = get_float("Enter Side 3:");
        bool isValid = valid_triangle(a, b, c);
}

通过将最后一行添加到 main 中,程序将使用三个三角形边运行您的函数,并将输出收集到 boolean 值中。如何使用价值取决于您。只要确保它是用main 编写的,或者是由main 调用的。


编辑:您的printf 函数使用%d 标识符,这意味着获取下一个参数(result)并将其视为整数(0 表示假,1 表示真)。 C 没有类似的布尔值标识符,因为它们通常用于控制部分代码,而不是直接输出。

有很多方法可以打印出 truefalse,但这里有一个更适合初学者的版本:

// Check if result is true
if (result)
{
    printf("%s", "true");
}
else 
{
    printf("%s", "false");
}

根据result 的布尔值,代码将打印一个不同的字符串来对应该值。要查看实现此目的的最精简的形式,请参阅 What is the printf format specifier for bool?

【讨论】:

  • 谢谢,我在main中调用了如下函数; valid_triangle (a,b,c); bool result = valid_triangle(a,b,c); printf("%d\n",result) 但是,我得到输出 1 和 0
  • @Charlesu49 我已经为您的后续行动添加了解释。在调用valid_triangle 之后,第二个代码块应该出现在main 中。
猜你喜欢
  • 2021-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-11
  • 1970-01-01
  • 1970-01-01
  • 2019-09-06
  • 2022-12-04
相关资源
最近更新 更多