我正在使用Dev c ++,我的代码在c中。
我想编写一个summ-calculator。汇总以下系列的术语数
1/1! + 2/2! + 3/3! + ....
术语取自输入
这是我的代码,但是当我运行它时挂起
#include<stdio.h>
#include<conio.h>
int main(void)
{
long i,j,facto=1,inp;
double sum=0;
scanf("%ld",&inp);
for (i=0;i<inp;i++)
{
for (j=i;j>1;j--)
{
facto *= j;
}
sum += i / facto;
}
printf("%f",sum);
getch();
return 0;
}
最佳答案
您的代码有几个问题:
您根本不需要内部循环。这花费了很多时间,这可能就是为什么您不经常看到输出的原因(可能是挂起的原因)。这样做:
facto = 1;
for (i=1;i<=inp;i++)
{
facto *= i;
sum += i / facto;
}
由于
i
和facto
都是int
,因此i / facto
大多数时候都是0
。所以修改它。sum += 1. * i / facto;