请问这个代码求1!+2!+……+n!问题出在哪里

#include
int main(){
int n,p=1,sum=0;
scanf("%d",n);
for(int a=1;a<=n;a++)
{for(int i=1;i<=a;i++)
{p=p*i;
sum=sum+p;};
printf("%d",sum);};

return 0;
}

一是int类型太小,二是p=1要加到内层循环之前。p是对每个a的阶乘的初始值,每次都要恢复为1
不知道你n的取值范围,这会影响变量类型的确定

#include <stdio.h>
int main(){
    int n;
    long long p=1,sum=0;
    scanf("%d",&n);
    for(int a=1;a<=n;a++)
    {
        p=1;
        for(int i=1;i<=a;i++)
            p=p*i;
        sum=sum+p;
    }
    printf("%lld",sum);
    return 0;
}

  1. p的值没有还原
  2. sum计算的位置错了,应该在第二层for的外面

其实不需要2个for循环,1个for就可以完成了。