
编写一段程序,程序要实现如下功能,注意把下面之和设置为double类型,以防越界。 即求1!+2!+3!+...+20!
#include<stdio.h>voidmain(){inti,m=1;doublesum=0;for(i=1;i<=20;i++){m=m*i;sum=sum+m;}...
#include<stdio.h>
void main()
{
int i,m=1;
double sum=0;
for(i=1;i<=20;i++)
{
m=m*i;
sum=sum+m;
}
printf("sum=%lf\n",sum);
}
这个程序能执行,结果是4563008025,太小了,20的阶乘就超过10位数了,不知道哪错了,求解答 展开
void main()
{
int i,m=1;
double sum=0;
for(i=1;i<=20;i++)
{
m=m*i;
sum=sum+m;
}
printf("sum=%lf\n",sum);
}
这个程序能执行,结果是4563008025,太小了,20的阶乘就超过10位数了,不知道哪错了,求解答 展开
1个回答
2013-05-30
展开全部
m溢出
#include<stdio.h>
void main()
{
int i;
double sum=0,m=1;
for(i=1;i<=20;i++)
{
m=m*i;
sum=sum+m;
}
printf("sum=%lf\n",sum);
}
#include<stdio.h>
void main()
{
int i;
double sum=0,m=1;
for(i=1;i<=20;i++)
{
m=m*i;
sum=sum+m;
}
printf("sum=%lf\n",sum);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询