求2!+4!+6!+8!+10!+…+ n!偶数阶乘问题

seki1018 2007-05-13 06:51:41
#include <stdio.h>
void main()
{
int i,n;
double t,s;
t=1;
s=0;
printf("请输入一个n值:");
scanf("%d",&n);
printf("\n");
for (i=2;i<=n;i=i+2)
{
t=t*i*(i-1); //求偶数阶乘2!,4!,...n!
s=s+t; //求阶乘和
}
printf("2!+4!+...+n!=%f",s);
}

为什么我输入171以内的数都没有问题呢?但是172就显示
1.#INF001
为什么上面程序可以算到171这么大呢?
我试过其他的一些写法 很多都到100就出现问题了?
是因为 double t,s的问题吗?
大数阶乘要用到动态链表?
帮我分析一下上面的吧。。。

...全文
4707 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jokar 2007-05-13
  • 打赏
  • 举报
回复
VC下以%e格式输出的运行结果
--------------------------
请输入一个n值:170

2!+4!+...+n!=7.257668e+306

--------------------------

double类型表示的浮点数范围在10的308次方左右.....比170再大一些的话肯定溢出了...

当然double类型的数据范围各编译系统下可能不同,但是确定是数据溢出问题.....
fandouC 2007-05-13
  • 打赏
  • 举报
回复
恩 应该是数字益出.
yulefox 2007-05-13
  • 打赏
  • 举报
回复
正像你说的,大数只能用数组或链表存了。
eggqq007 2007-05-13
  • 打赏
  • 举报
回复
应该是溢出了。
  • 打赏
  • 举报
回复
超过浮点数的表示范围

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧