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

2024-11-25 13:20:17
推荐回答(6个)
回答1:

楼上的算出来结果比我的大,主要是因为他用double 来声明的,有效位数比long float少,而且用浮点数的时候本来就会有误差,所以用一个整型的分母比较精确点!
# include
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 是旧版本里的表示方法!

回答2:

#include

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;
}

回答3:

楼上看清楚了,分母是n的阶乘啊!你写的程序也未免太简单了 吧!这个应该是求不出来的,会溢出!!
int main()
{
double i;
double sum=0;
double a=1;
for(i=1;i<=100;i++)
{
a=a*i;
sum=sum+1/a;
}
cout<}

回答4:

#include

int main(){
double i,s,l;
s=0;l=1;
for(i=1;i<=100;i++){
l/=i;
s+=l;
}
printf("%lf\n",s);
getchar();
return 0;
}

回答5:

给,已经编译运行确认:
#include
#include

#define N 100
int main(int argc, char* argv[])
{
double e=1,t=1;
int t1;
for (t1=2;t1<=N;++t1)
{
t*=(double)1/t1;
e+=t;
}
printf("%lf",e);

getch();
return 0;
}

运行后的结果:
1.718282

回答6:

#include
void main ()
{
double i,j;
for(i=1,j=1;i<=100;i++)
{i=i*(i+1);
j=j+1/i;
}
printf("%f",j);
}
我运行了一下,可以用。