标题:这个程序原意是想算1!+2!+3!+……+99!来着,但是结果却是80303791,很明显 ...
取消只看楼主
civilherui
Rank: 2
来 自:陕西榆林
等 级:论坛游民
威 望:2
帖 子:67
专家分:97
注 册:2015-1-18
结帖率:100%
已结贴  问题点数:4 回复次数:4 
这个程序原意是想算1!+2!+3!+……+99!来着,但是结果却是80303791,很明显不对啊,检查不出程序问题,精确度应该有问题,求教单身怎么改?
这个程序原意是想算1!+2!+3!+……+99!来着,但是结果却是80303791,很明显不对啊,检查不出程序问题,精确度应该有问题,求教单身怎么改?
#include<stdio.h>
main()
{
    int number,i;
    long factorial,m;
    m=0;
    factorial=1;
    for(number=1;number<=99;number++)
    {
         factorial=factorial*number;
         if(number%2==0) continue;
         m=m+factorial;
        
    }
    printf("the sum=%ld",m);
}
搜索更多相关主题的帖子: number 单身 
2015-01-27 19:41
civilherui
Rank: 2
来 自:陕西榆林
等 级:论坛游民
威 望:2
帖 子:67
专家分:97
注 册:2015-1-18
得分:0 
回复 2楼 young
你的显示结果大概有多少位?
光是99的阶乘,假如90个10相乘就是91位,你的显示结果是不是有几百位?
我把你那个程序运行后显示结果是1005876315485501977,用的是c-free。很明显我的运行结果还是错的。

我走向的将是机械、电子、编程的集成之路。
2015-01-27 20:24
civilherui
Rank: 2
来 自:陕西榆林
等 级:论坛游民
威 望:2
帖 子:67
专家分:97
注 册:2015-1-18
得分:0 
回复 3楼 抗压吧
哦,不好意思把题给抄错了,是只有奇数的阶乘和,所以有那个语句。
即使这样unsigned long应该也是不够用的吧,位数应该有几百位。

我走向的将是机械、电子、编程的集成之路。
2015-01-27 20:26
civilherui
Rank: 2
来 自:陕西榆林
等 级:论坛游民
威 望:2
帖 子:67
专家分:97
注 册:2015-1-18
得分:0 
回复 6楼 wmf2014
用double估值我编辑后是9033584e+155么,还和你的不一样,
还有那个那么多long怎么写进程序里面?你把我的程序修改一下。
万分感谢。

我走向的将是机械、电子、编程的集成之路。
2015-01-27 21:22
civilherui
Rank: 2
来 自:陕西榆林
等 级:论坛游民
威 望:2
帖 子:67
专家分:97
注 册:2015-1-18
得分:0 
回复 9楼 诸葛欧阳
今年假期我刚自学的c,还没有学到没那里,不过同样感谢,长见识了。

我走向的将是机械、电子、编程的集成之路。
2015-01-30 22:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-441515-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.651450 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved