答案:楼上的算出来结果比我的大,主要是因为他用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 是旧版本里的表示方法!
其他:这个不用算,100的阶乘用什么数据类型都不行,只能用高精度。另外,这个公式再加1就等于自然对数e,所以这个式子等于e-1=1.718281828
不用算前一百项,算个十几项就约等于这个数了 #include<stdio.h>
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;
} 楼上看清楚了,分母是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<<sum<<endl;
} 给,已经编译运行确认:
#include<conio.h>
#include<stdio.h>
#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 #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;
} #include<stdio.h>
void main ()
{
double i,j;
for(i=1,j=1;i<=100;i++)
{i=i*(i+1);
j=j+1/i;
}
printf("%f",j);
}
我运行了一下,可以用。 # include <stdio.h>
main()
{ long float s=0;
int n=1, deno=1 ;
do
{
s=s+(long float)1/deno;
deno=deno*(deno+1);
n++;
}
while(n<=100) ;
printf("%lf\n",s) ;
getch();
} #include<stdio.h>
int main(void)
{
float result=0;
int i,j;
long sum=1;
for(i=1;i<=100;i++)
{
for(j=1;j<=i;j++)
{
sum*=j;
}
result+=(float)1/sum;
sum=1;
}
printf("s=%f",result);
return 0;
} 1 # include <stdio.h>
main()
{ double s=0, temp=1;
int i=1 ;
do
{
temp/=i;
if(temp==0) //增加零的判定,其实用不到100项,temp就已经为0,可以跳出循环了
break;
s+=temp;
i++;
}
while(i<=100) ;
printf("%lf\n",s) ;
}
上一个:C语言题目 那位高手帮忙做一下??
下一个:什么是c语言 它有什么用。能干什么?