提问提问提问

[复制链接]
查看11 | 回复3 | 2008-8-19 14:08:09 | 显示全部楼层 |阅读模式
#include
int AAAA(int i)
{
int b=1,a;
for (a=1;a<=i;a++)
b=b*a;
return (b);
}
void main()
{
int a=0,c,d;
scanf("%d",&d);
for (c=1;c<=d;c++)
a=a+AAAA(c);
printf("%d",a);
}
为什么输入20以上的数出现负的呢??

回复

使用道具 举报

千问 | 2008-8-19 14:08:09 | 显示全部楼层
结果太大,溢出了。你可以把a与AAA都改为double型,结果用%e输出。...
回复

使用道具 举报

千问 | 2008-8-19 14:08:09 | 显示全部楼层
20的阶层实在是太大了,c里面没有存储如此大类型的数据,只能用数组来存储。你试一下用数组来做。不行的话,找我,我已经做出来了。...
回复

使用道具 举报

千问 | 2008-8-19 14:08:09 | 显示全部楼层
阶乘结果太大, 导致 int 变量 a 溢出!...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行