c语言求1-1/2!+1/3!-1/4!+1/5! ...+1/n!
这样写为什么错?#include<stdio.h>#include<math.h>voidmain(){intt;scanf("%d",&t);inti,sum,f=1,...
这样写为什么错?
#include<stdio.h>
#include<math.h>
void main()
{
int t;
scanf("%d",&t);
int i,sum,f=1,n,b;
for(i=1,sum=0;i<=t;i++,f=1)
{
for(n=i;n>0;--n)
{
f*=n;
}
b=pow(-1,i+1)*1.0/f;
sum=sum+b;
}
printf("%d\n",sum);
} 展开
#include<stdio.h>
#include<math.h>
void main()
{
int t;
scanf("%d",&t);
int i,sum,f=1,n,b;
for(i=1,sum=0;i<=t;i++,f=1)
{
for(n=i;n>0;--n)
{
f*=n;
}
b=pow(-1,i+1)*1.0/f;
sum=sum+b;
}
printf("%d\n",sum);
} 展开
4个回答
展开全部
你的变量不能定义成int类型
你后面的运算都是浮点型的数据,而且结果都是小数,所以,修改一下
int i,f=1,n;
double b,sum;
printf("%lf\n",sum);
完整代码
#include<stdio.h>
#include<math.h>
int main()
{
int t;
scanf("%d",&t);
int i,f=1,n;
double b,sum;
for(i=1,sum=0;i<=t;i++,f=1)
{
for(n=i;n>0;--n)
{
f*=n;
}
b=pow(-1,i+1)*1.0/f;
sum=sum+b;
}
printf("%lf\n",sum);
return 0;
}
你后面的运算都是浮点型的数据,而且结果都是小数,所以,修改一下
int i,f=1,n;
double b,sum;
printf("%lf\n",sum);
完整代码
#include<stdio.h>
#include<math.h>
int main()
{
int t;
scanf("%d",&t);
int i,f=1,n;
double b,sum;
for(i=1,sum=0;i<=t;i++,f=1)
{
for(n=i;n>0;--n)
{
f*=n;
}
b=pow(-1,i+1)*1.0/f;
sum=sum+b;
}
printf("%lf\n",sum);
return 0;
}
展开全部
for(n=i;n>0;--n)
{
f*=n;
}
每次都计算n!,计算量很大,这里有个小技巧
上一次计算的n!在诚意n+1那么就是这一次的(n+1)!
刚好每次变化,i都会加1,所以f的值乘以i就是这一次的n!的值
int
flag=1;
for(i=1,sum=0;i<=t;i++)
{
f*=n;
//这个就是计算n!
sum+=flag*1.0/f;
flag*=-1;
//这里就是那个正负号的变化
}
{
f*=n;
}
每次都计算n!,计算量很大,这里有个小技巧
上一次计算的n!在诚意n+1那么就是这一次的(n+1)!
刚好每次变化,i都会加1,所以f的值乘以i就是这一次的n!的值
int
flag=1;
for(i=1,sum=0;i<=t;i++)
{
f*=n;
//这个就是计算n!
sum+=flag*1.0/f;
flag*=-1;
//这里就是那个正负号的变化
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for(n=i;n>0;--n)
{
f*=n;
}
每次都计算n!,计算量很大,这里有个小技巧
上一次计算的n!在诚意n+1那么就是这一次的(n+1)!
刚好每次变化,i都会加1,所以f的值乘以i就是这一次的n!的值
int flag=1;
for(i=1,sum=0;i<=t;i++)
{
f*=n; //这个就是计算n!
sum+=flag*1.0/f;
flag*=-1; //这里就是那个正负号的变化
}
{
f*=n;
}
每次都计算n!,计算量很大,这里有个小技巧
上一次计算的n!在诚意n+1那么就是这一次的(n+1)!
刚好每次变化,i都会加1,所以f的值乘以i就是这一次的n!的值
int flag=1;
for(i=1,sum=0;i<=t;i++)
{
f*=n; //这个就是计算n!
sum+=flag*1.0/f;
flag*=-1; //这里就是那个正负号的变化
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
f=1错,每次循环f都置成1了,f就不是阶乘了啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询