标题:关于阶乘用while循环写代码,结果变负数
只看楼主
crazymano
Rank: 1
等 级:新手上路
帖 子:9
专家分:9
注 册:2010-10-27
结帖率:100%
已结贴  问题点数:20 回复次数:12 
关于阶乘用while循环写代码,结果变负数
程序代码:
#include<stdio.h>
void main()
{

 int i=1;

 long double s=1;

 while(i<=100)

 {
  s=i*s;
  i++;

 }

 printf("%d\n",s);
}
   运行结果-7911....
用long int s=1;...
结果却是 0....
不解中...
求解...
谢...
搜索更多相关主题的帖子: 负数 阶乘 代码 结果 
2010-11-14 22:08
outsider_scu
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:430
专家分:1333
注 册:2010-10-21
得分:4 
s是double,
你却用%d输出。。。

编程的道路上何其孤独!
2010-11-14 22:19
HonryZZ
Rank: 2
等 级:论坛游民
帖 子:13
专家分:59
注 册:2010-11-12
得分:4 
.... 等高手解答...
结果超出long double能表示的范围了...
2010-11-14 22:34
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:705
专家分:2043
注 册:2010-11-11
得分:4 
使用long long 试试,如果还不行,就得用数据结构了
2010-11-14 22:43
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:705
专家分:2043
注 册:2010-11-11
得分:0 
long long 不知道你的编译器支持不
2010-11-14 22:44
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:705
专家分:2043
注 册:2010-11-11
得分:0 
还有,既然是求100!就不要用浮点类型了,整型和浮点类型的存储是不一样的。精确度不够
2010-11-14 22:47
丢丢在墙角
Rank: 2
等 级:论坛游民
帖 子:6
专家分:15
注 册:2010-7-30
得分:4 
两点,一是不同数据的不同转换,输出时一般会出错的;二是要考虑计算的结果有没有超出数据类型的表达范围。
2010-11-14 23:25
makebest
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:658
专家分:962
注 册:2005-3-17
得分:4 
阶乘一般都不是要求近似值, 结果就用数组来表示吧.
2010-11-15 08:34
crazymano
Rank: 1
等 级:新手上路
帖 子:9
专家分:9
注 册:2010-10-27
得分:0 
回复 2楼 outsider_scu
那请问应该用什么输出?
2010-11-15 09:06
outsider_scu
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:430
专家分:1333
注 册:2010-10-21
得分:0 
一。100的阶层好像很大。要溢出。
二。double用%f输出,用%lf输入。。
仅供参考。。

编程的道路上何其孤独!
2010-11-19 10:41



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




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

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