我正在尝试调用我创建的函数。这将需要加倍,然后将它们四舍五入到小数点后两位。
我试图将参数“ 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。
答案 0 :(得分:0)
如果您不向我们提供您收到的错误消息,则很难提供帮助。如果没有标志,则此代码可以正常编译。
我注意到了几个错误:
roundnum()
的参数。我敢打赌你想写:double
roundnum(double x)
{
return (x + .5);
}
在我上面的代码中,由于我完全摆脱了它,所以double n
尚未初始化。
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
,这是一个错误。我不会告诉您如何解决此问题,请考虑做功课;)