| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 386 人关注过本帖
标题:请问这个程序为什么编译通过运算不正确?
只看楼主 加入收藏
liqingyang
Rank: 2
等 级:论坛游民
帖 子:47
专家分:39
注 册:2010-2-24
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
请问这个程序为什么编译通过运算不正确?
请问这个程序为什么编译通过运算不正确?
5的阶乘能算对,10的为什么就算不对,请高手指点.


int acc(int n)
{
 int i;long k=1;
 for(i=1;i<=n;i++)
  k*=i;
 return k;
}
void main()
{
 int n;long s;
 printf("input a number:\n");
 scanf("%d",&n);
 s=acc(n);
 printf("%d! = %ld",n,s);
}
搜索更多相关主题的帖子: 编译 运算 
2010-03-18 22:30
mikelr
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:67
专家分:161
注 册:2010-3-17
收藏
得分:15 
int acc(int n)
{
int i;long k=1;
for(i=1;i<=n;i++)
  k*=i;
return k;
}


int acc 改成 long acc

返回的是long 型,你定义的是int
2010-03-18 22:38
liqingyang
Rank: 2
等 级:论坛游民
帖 子:47
专家分:39
注 册:2010-2-24
收藏
得分:0 
哦,明白了,谢谢楼上的兄弟.
2010-03-18 22:42
ldg628
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:3
帖 子:526
专家分:3036
注 册:2009-6-23
收藏
得分:5 
不知道你的sizeof(int)等于几,不过以你的结果看,应该是两个字节吧,结果不正确是因为数据太大,两个字节已经装不下了
你可以改变一下类型,如long long,但是你输入太大的数时,还是同样会溢出的,要想别的方法才行
2010-03-18 22:44
liqingyang
Rank: 2
等 级:论坛游民
帖 子:47
专家分:39
注 册:2010-2-24
收藏
得分:0 
不是最大就能算到42亿多吗?

再大的数值怎么解决.
2010-03-18 22:57
ldg628
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:3
帖 子:526
专家分:3036
注 册:2009-6-23
收藏
得分:0 
好像是用数组吧,一个元素存储一位,具体你搜搜吧,这方面的代码应该可以找得到的
2010-03-18 23:08
快速回复:请问这个程序为什么编译通过运算不正确?
数据加载中...
 
   



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

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