#include <stdio.h>
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;
}
#include <stdio.h>
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;
}