如何调用函数

时间:2019-06-10 18:39:54

标签: c decimal rounding

我正在尝试调用我创建的函数。这将需要加倍,然后将它们四舍五入到小数点后两位。

我试图将参数“ x”放在“ roundnum”的参数中,但这会导致错误。

#include <stdio.h>
#include <math.h>

double roundnum(double x);

int
main(void)
{

    double n;
    int roundedn;
    printf("Enter the number:\n");
    scanf("%lf", &n);

    printf("Rounded %.2f\n", roundnum(n));


    return 0;
}

double
roundnum(double x)
{
    double n;
    int number = (int)(n + .5);
    return number;
}

如果我在3.145中进行扫描,则预期输出应为3.15000。

3 个答案:

答案 0 :(得分:0)

如果您不向我们提供您收到的错误消息,则很难提供帮助。如果没有标志,则此代码可以正常编译。

我注意到了几个错误:

  1. 您没有使用传递给roundnum()的参数。我敢打赌你想写:
double
roundnum(double x)
{
    return (x + .5);
}
  1. 在我上面的代码中,由于我完全摆脱了它,所以double n尚未初始化。

  2. int roundedn未使用,因此无用。

答案 1 :(得分:0)

我相信在您的roundnum()函数中,您从未将传入参数值n分配给x中使用的变量roundnum()。因此,x从不分配,默认为零。

从逻辑上讲,一旦将x的值赋给n,该函数就会起作用:

double
roundnum(double x)
{
    double n;
    n=x;
    int number = (int)(n + .5);
    return number;
}

并简化功能以提高效率:

double
roundnum(double x)
{
    return((int)(x + .5));
}

答案 2 :(得分:0)

首先,此功能存在多个错误:

double roundnum(double x);
  • 该函数将返回double,而您将返回int
  • 很显然,您还不了解如何使用参数。调用roundnum(n)时,您会将在main主体中声明的n的本地副本传递给变量x,该变量x是roundnum()的参数。 double n的{​​{1}}与main()的{​​{1}}没有任何关系。基本上在double n中,您使用的是未初始化的变量,这是一个逻辑错误。您要四舍五入的数字基本上是roundnum()

此函数已更正以上错误:

roundnum()

现在让我们来谈谈为什么舍入函数在逻辑上是错误的。您希望进行2进制的十进制运算,但实际上,您只是使用x增加任何数字。那么,如果我输入数字double roundnum(double x) { double number = (x + .5); return number; } 怎么办?它已经四舍五入,但是函数将返回0.5,这是一个错误。我不会告诉您如何解决此问题,请考虑做功课;)