| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3795 人关注过本帖
标题:关于阶乘用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
帖 子:709
专家分:2063
注 册:2010-11-11
收藏
得分:4 
使用long long 试试,如果还不行,就得用数据结构了
2010-11-14 22:43
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:709
专家分:2063
注 册:2010-11-11
收藏
得分:0 
long long 不知道你的编译器支持不
2010-11-14 22:44
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:709
专家分:2063
注 册: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
快速回复:关于阶乘用while循环写代码,结果变负数
数据加载中...
 
   



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

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