有关于数据处理方面的c语言问题 大神请进!!!
这个代码就是计算n的阶乘之和,我想算法应该没有问题,因为我试了几个数都对了。重点是,重点是,这个阶乘和中的n要大于等于1,小于等于20,所以我就不知道怎么处理了,计算从1...
这个代码就是计算n的阶乘之和,我想算法应该没有问题,因为我试了几个数都对了。重点是,重点是,这个阶乘和中的n要大于等于1,小于等于20,所以我就不知道怎么处理了,计算从1到20的阶乘之和,结果就会出现怪怪的乱七八糟的数。。。哎,求解答
#include<stdio.h>
int main(void)
{
int n,i,j,a;
long double sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
a=1;
for(j=i;j>=1;j--)
a=a*j;
sum=sum+a;
}
printf("%Ld",sum);
} 展开
#include<stdio.h>
int main(void)
{
int n,i,j,a;
long double sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
a=1;
for(j=i;j>=1;j--)
a=a*j;
sum=sum+a;
}
printf("%Ld",sum);
} 展开
4个回答
展开全部
关于阶乘 数值都会很大,c语言默认的数据类型存储大小均有限,很容易造成数据溢出,无法表示很大的数值 如int 65535 超出即溢出出错
建议你更改算法处理 灵活运用
建议你更改算法处理 灵活运用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最后 的printf改成这样:
printf("%lf",sum);
printf("%lf",sum);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你进行的运算都是整数运算,sum类型不应该定义为long double这种浮点类型,定义为长整型long类型就行了,printf("%d",sum);
,不然直接运行的话会出问题
,不然直接运行的话会出问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询