为什么我的程序打印0而不是计算的正弦值?

时间:2017-06-06 13:13:32

标签: c cs50

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

float sine(float a, float b);

int main()
{
    printf ("Choose an option:\n1- Sin\n2-Cos\n3-Tan\n");
    int option = get_int();
    if (option==1)
    {
        printf("What is the hypotnuse of the triangle?\n");
        float hypotnuse = get_float();
        printf("What is the opposite side of the triangle?\n");
        float opposite = get_float();
        sine(opposite, hypotnuse);
        printf ("The answer is %f", sine);

    }   
    // else … cosine, tangent
}

float sine(float a, float b)
{
  return a/b;
}

无论我为hypotnuseopposite提供什么价值,我得到的输出都是0.000000。请解释代码有什么问题?

1 个答案:

答案 0 :(得分:6)

sine是函数sine()的地址。

您必须使用函数sine()的返回值:

float result = sine(opposite, hypotnuse);
printf("The answer is %f\n", result);

在C中有不同的方法可以做到这一点,另一个像jonathan-leffler建议的那样“动态”使用结果:

printf("sine(%f, %f) = %f\n", opposite, hypotnuse, sine(opposite, hypotnuse));

这是有效的,因为调用函数sine()的结果将作为参数直接发送到printf()