帮小弟我看一下,这个有错吗?题意是求1+2!+3!+10!的和

帮我看一下,这个有错吗?题意是求1+2!+3!...+10!的和
#include <stdio.h>
void   main()
{
int   num=1,i,j,sum=0,ji=1;
for(i=1;i <=10;i++){
for(j=1;j <=i;j++){
ji=ji*j;

}
sum=sum+ji;
num++;

}
printf( "和为:%d\n ",sum);
}

------解决方案--------------------
#include <stdio.h>

int main()

{
int n=10;
long double sum=0,j=1;
for(int i=1;i <=n;i++)
{
j*=i;
sum+=j;
}
printf( "%lf\n ",sum);
return 0;
}

------解决方案--------------------
明显10!超出了int可存储的范围,试着用uint64
------解决方案--------------------
#include <stdio.h>
void main()
{
int num=1,i,j,sum=0,ji=1;
for(i=1;i <=10;i++){ //
for(j=1;j <=i;j++){ //
ji=ji*j; // 你想算什么? 这不是阶乘啊.

}
sum=sum+ji; //
num++;

}
printf( "和为:%d\n ",sum);
}

------解决方案--------------------
#include <stdio.h>
#define LINE_SIZE 3

void main()
{
int num=1,i,j,sum=0,ji=1;
for(i=1;i <=LINE_SIZE;i++){
ji=1; // 这里,就对了
for(j=1;j <=i;j++){
ji=ji*j;

}
sum=sum+ji;
num++;

}
printf( "和为:%d\n ",sum);

}
------解决方案--------------------
然后才是 长度问题
------解决方案--------------------
#include <stdio.h>
void main()
{
long num=1,i,j,sum=0,ji=1; //长度
for(i=1;i <=10;i++){
ji=1; //初值
for(j=1;j <=i;j++){
ji=ji*j;

}
sum=sum+ji;
num++;

}
printf( "和为:%d\n ",sum);
}
------解决方案--------------------
主要就是int的问题
------解决方案--------------------
上面说错了。。。。应该是2^31-1,还有一位符号位。
------解决方案--------------------
恩 就是没有初始化的问题 !
int是范围是够了的
------解决方案--------------------
变量在使用之前都应该初始化.
------解决方案--------------------
float t,s;
int i;
for(i=1;i <=5;i++)
{
t*=i;
s+=t;
}
------解决方案--------------------
我晕,没看有兄弟给出了..
------解决方案--------------------
你没有把内循环的ji每次清零,
也可以不用两重循环,只要一重循环就够了,上面都有人给出了代码。
还是就是要注意数据类型,int能装下10!吗?

------解决方案--------------------
sum没初始化,跟int范围无关
------解决方案--------------------
#include <stdio.h>
void main()
{
int i,j=1,sum=0;
for(i=1;i <=10;i++)
{
j*=i;
sum+=j;
}
printf( "和为:%d\n ",sum);
}

那用两重循环,我是这样做D,4037913 - -!!!
------解决方案--------------------