当前位置: 代码迷 >> C语言 >> [求助]求1!+2!+3!……20!的和,可是我每次都溢出。
  详细解决方案

[求助]求1!+2!+3!……20!的和,可是我每次都溢出。

热度:88   发布时间:2006-07-23 09:19:29.0
c中Unsigned long 也就4个字节,也就是能储存32位,它表示的范围是:0~4294967295
而20!是2432902008176640000
连20!都装不下,你说怎么可能可以表示30!
----------------解决方案--------------------------------------------------------
main()
{int n,i;
long double sum;
sum=0,n=1;
for (i=1;i<=20;i++)
{n=n*i;sum+=n;}
printf("sum=%?",sum);
}
这是我写的,各位大哥看看,long double型怎么输出啊
没用过这种类型,我打问号的地方应该用什么字符?请指点

[此贴子已经被作者于2006-7-23 20:08:37编辑过]


----------------解决方案--------------------------------------------------------

汗死, float型应该可以, 输出的时候用 %e 科学记数法可以正确显示. 貌似楼猪用的 潭浩强的书啊?
----------------解决方案--------------------------------------------------------
两个人用不同的编译器在这讨论半天,lianxin19的程序在VC6。0下可行,结果是1409286144,VC是 32位平台,和TC的不同,所以两个都有道理
----------------解决方案--------------------------------------------------------
我错了,装不下了,用数组装吧
----------------解决方案--------------------------------------------------------
  相关解决方案