#include<stdlib.h>
#include<stdio.h>
long double fact(unsigned long int n)
/*The factorial of a positive integer by recursion*/
{
if (n==0)
return 1;
else
return n*fact(n-1);
}
int main()
{
long double sum, n;
int i, m;
printf("\t/*Code to find the approximate value of e */");
check:
printf("\n\n\tPlease Enter the value of n := ");
scanf("%lf", &n);
sum=0;
for (i=0; i<=n; i++)
sum +=1/(fact(i));
printf("\n\n\tThe appriximate value of e := %.15lg\n\n\t", sum);
printf("Let's do this again? 1/ YES Any key/ NO := ");
scanf("%d", &m);
if (m==1)
goto check;
else (1);
return 0;
}
此代码在 Visual C++ 2010 中运行得非常好,但在 DEV C++ 中却不行。它不断地为 e 的值返回零。有人可以解释一下原因吗!谢谢!
最佳答案
使用这个scanf("%Lf", &n);
long double的格式说明符是%Lf
,%le
,%lg
所以使用这个
还要考虑这些点
Dev-C++ 它使用 GCC (MinGW)。任何 Dev-C++ 更新都无法解决此问题。
Dev-C++已经5年没有更新了;不要屏住呼吸。
保留了衍生的 wxDev-C++。
如果您想要编译器更新,请访问 www.mingw.org,并希望最新版本仍然可以与古老的 Dev-C++ 一起使用。或者使用不同的 IDE 或编译器。我推荐 VC++ 2010 Express Edition(免费,并且是一个更好的调试器),您的代码可以像 VC++ 2008 中一样工作,但这并不意味着它是安全的。
您如何确定该值为“0”?它实际上很可能是 0.000001 之类的东西,而你的询问方法对其进行了四舍五入。您应该在调试器中查看该值,而不是打印语句。不幸的是,Dev-C++ 的调试器很糟糕。
ISO C 标准库仅定义 double 函数。如果您想要为 float 定义版本,则需要编译为 C++ 并包含 . C 不支持函数重载,因此在 C 中如果没有不同名称的函数就不可能做到这一点。
关于C/C++ 代码不适用于 DEV C++。 (浮点或类型),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10463587/