求1!+2!+3!+4!+…+20!
我用win-tc编译的,编译没有错,调试不成功,求高人指点。以下是我自编内容:
#include "stdio.h"
void main()
{
long int i,n,s;
n=1;s=0;
for(i=1;i<=20;i++)
{
n=n*i;
s=s+n;
printf("%ld",s);
}
getch();
}
求1!+2!+3!+4!+…+20!
我用win-tc编译的,编译没有错,调试不成功,求高人指点。以下是我自编内容:
#include "stdio.h"
void main()
{
long int i,n,s;
n=1;s=0;
for(i=1;i<=20;i++)
{
n=n*i;
s=s+n;
printf("%ld",s);
}
getch();
}
不行,20!太大了,你得用float或double类型。
long int 只能表示到-2147483647到2147483647,最多到12!再往上就溢出,表示不了了
循环算法不对
应该这样:
int n=1,sum=0;
for(int i=1;i<20;i++) //循环计算1~20
{
for(int j=1;j<=i;j++) //计算1~20 每个数的阶乘
{
n=n*j;
}
sum=sum+n; //20个数的阶乘相加
}
不知上面的循环算法是否合理
其实还有一种方法,那就是用递归的方法,这样的话,是最明了的
vc编译结果
这个东西是什么 http://www.19yxw.com/803890??????????? 、