用C语言求 S=1+1/2!+1/3!+....+1/100!

来源:百度知道 编辑:UC知道 时间:2024/06/22 07:57:41

楼上的算出来结果比我的大,主要是因为他用double 来声明的,有效位数比long float少,而且用浮点数的时候本来就会有误差,所以用一个整型的分母比较精确点!
# include <stdio.h>
main()
{ long float s=0;
int n=1, deno=1 ;/*deno 是分母*/
do
{
s=s+(long float)1/deno; /*(long float)是强制类型转换,如果不转换的话 1/deno的结果为0*/
deno=deno*(deno+1);
n++;
}
while(n<=100) ;

printf("%lf\n",s) ;
getch();
}
我运行过了,如果有什么问题HI我!

对了这里的long float 等同于double 是旧版本里的表示方法!

#include<stdio.h>

int main()
{
double result =0;
for(int i=1;i<=100;i++)
result += a(i);
printf("%lf",result);
getch();
return 0;
}

double a(int n)
{
double a =1;
for(int i=1;i<=n;i++)
{
a = a*i;
}
double result = 0;
result = 1/a;
return result;
}

楼上看清楚了,分母是n的阶乘啊!你写的程序也未免太简单了 吧!这个应该是求不出来的,会溢出!!
int main()
{
double i;
doubl