我正在使用Dev c ++,我的代码在c中。 我想编制一个汇总计算器。它总结了以下系列的术语数量
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;
}
答案 0 :(得分:1)
您的代码有几个问题:
你根本不需要内循环。这占用了大部分时间,这可能是您经常看不到输出的原因(可能是挂起 ing的原因)。这样做:
facto = 1;
for (i=1;i<=inp;i++)
{
facto *= i;
sum += i / facto;
}
由于i
和facto
都是int
s,i / facto
大部分时间都是0
。所以修改它。
sum += 1. * i / facto;
答案 1 :(得分:0)
更改
for (i=0;i<inp;i++)
至
for (i=1;i<=inp;i++)
而
for (j=i;j>1;j--)
到for (j=i;j>=1;j--)
和sum += i / facto;
到sum += i*1.0 / facto;
而
在sum += i*1.0 / facto;
放facto =1;