Floating point exception (core dumped) 的问题

navalphantom 2013-10-14 07:28:41
请各位大大帮我看以下代码,我猜是溢出造成的问题,想请教如何修改。。。

unsigned long p(int a)
{
if(a==0||a==1) return 1;
unsigned long sum=a;
while(a>1)
{
sum=sum*(a-1);
a--;
}
return sum;

}
main()
{
printf("%ld\n",p(12));
// x+2y=100, 求x,y排列共有几种
int y;
int x;
unsigned long type;
// 走法总数
unsigned long type_sum=0;
for(y=0;y<51;y++)
{
x=100-2*y;
type=p(x+y)/p(x)/p(y);
printf("x:%d,y:%d,共%ld种\n",x,y,p(x+y));
type_sum=type_sum+type;

}

printf("共有:%d走法\n",type_sum);

}

...全文
3377 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lm_whales 2013-10-15
  • 打赏
  • 举报
回复
有可能是溢出,然后sum =0;然后p(x)=0 或者p(y)=0; 然后除法错中断。。。。。。。。。。。
AnYidan 2013-10-14
  • 打赏
  • 举报
回复
core dumped 一般是 fatal error, 换个小点的输入确认一下
图灵狗 2013-10-14
  • 打赏
  • 举报
回复
溢出应该不会core dumped吧。
引用 1 楼 max_min_ 的回复:
unsigned long 溢出了, 试了下代码,把 x,y 都相对改小点是OK的! 这里估计要特别作大数处理了,不能这么简单的用unsigned long long 了
max_min_ 2013-10-14
  • 打赏
  • 举报
回复
unsigned long 溢出了, 试了下代码,把 x,y 都相对改小点是OK的! 这里估计要特别作大数处理了,不能这么简单的用unsigned long long 了

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧