关于c语言的题“求S=1/1!+1/2!+1/3!+…+1/N!”我知道算法但是我的结果最后一位与标准答案不一样,求大神
原题是求S=1/1!+1/2!+1/3!+…+1/N!并输出结果(显示时小数部分占16位,计算时要求从第1项开始往后累加)。N为任意自然数(只考虑int型)标准答案输入1...
原题是 求S=1/1!+1/2!+1/3!+…+1/N!并输出结果(显示时小数部分占16位,计算时要求从第1项开始往后累加)。N为任意自然数(只考虑int型) 标准答案 输入18 得到的是1.7182818284590455,而我的答案是1.7182818284590451;
#include <stdio.h>
int main(void)
{
int nn, ii, zz;
double sum = 0;
float kk = 1;
printf("Please input n: ");
scanf ("%d", &nn);
zz = nn;
for (nn = nn; nn >= 1; nn--)
{
for (ii = 1; ii <= nn; ii++)
{
kk = kk * ii;
}
//printf("\n%lf", kk);
sum = 1 / kk + sum;
//printf("\n%.16lf", sum);
kk = 1;
}
printf("\nS=1/1!+1/2!+...+1/%d!=%.16lf\n", zz, sum);
return 0;
}
有两个斜杠的解释语句是我当时检查是用的 大家可以忽略。。。。。本人初学者 求大神赐教 展开
#include <stdio.h>
int main(void)
{
int nn, ii, zz;
double sum = 0;
float kk = 1;
printf("Please input n: ");
scanf ("%d", &nn);
zz = nn;
for (nn = nn; nn >= 1; nn--)
{
for (ii = 1; ii <= nn; ii++)
{
kk = kk * ii;
}
//printf("\n%lf", kk);
sum = 1 / kk + sum;
//printf("\n%.16lf", sum);
kk = 1;
}
printf("\nS=1/1!+1/2!+...+1/%d!=%.16lf\n", zz, sum);
return 0;
}
有两个斜杠的解释语句是我当时检查是用的 大家可以忽略。。。。。本人初学者 求大神赐教 展开
展开全部
你的程序如果如下改改将可能会更好,因为这样它将更简洁,更容易看懂,也更快。
#include <stdio.h>
int main( )
{
int i, n;
double sum = 0, t = 1;
scanf("%d", &n)
for(i = 1; i <= n; i++)
{
t = t / i;
sum = sum + t;
}
printf("\nS=1/1!+1/2!+...+1/%d!=%.16lf\n", n, sum);
return 0;
}
#include <stdio.h>
int main( )
{
int i, n;
double sum = 0, t = 1;
scanf("%d", &n)
for(i = 1; i <= n; i++)
{
t = t / i;
sum = sum + t;
}
printf("\nS=1/1!+1/2!+...+1/%d!=%.16lf\n", n, sum);
return 0;
}
更多追问追答
追问
不过为什么我的运行出来最后一位会不一样啊
我也用是double 来定义我的变量啊。能具体解释分析一下吗
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
long long int nn,ii,zz;
double sum =0,kk;
nn=ii=1;
do
{ kk=(double)1/ii; sum+=kk; nn++; ii*=nn;
} while ( kk>= 1e-17 );
printf("\nS=1/1!+1/2!+...+1/%lld!=%.16lf\n",nn,sum);
这题需要采用精度做为结束条件,并且考虑到阶乘得数是否会导致整型数据溢出。
double sum =0,kk;
nn=ii=1;
do
{ kk=(double)1/ii; sum+=kk; nn++; ii*=nn;
} while ( kk>= 1e-17 );
printf("\nS=1/1!+1/2!+...+1/%lld!=%.16lf\n",nn,sum);
这题需要采用精度做为结束条件,并且考虑到阶乘得数是否会导致整型数据溢出。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询