①求阶乘之和s
s=1!+2!+···+k!(1<=k<=n)
~
②程序
#includestdio.h
/*定义函数*/
longf(intn)
{
inti;
longE;
E=1;
for(i=1;i<=n;i++)E=E*i;
returnE;
}
/*主函数*/
main()
{
longs;
intk,n;
scanf("%d",n);
s=0;
for(k=1;k<=n;k++)s=s+f(k);
printf("%ld\n",s);
}
~
③解释
#includestdio.h
longf(intn)
/*没试过把f(n)写成f(i)*/
{
inti;
longE;
/*看见k!,本来用字母k表示(k-1)!,结果k为int。
此处的E表示(k-1)!,数字可能很大,定义为长整形long,
没试过能不能把E直接定义为int*/
E=1;
/*E初始值必须从1开始,不能从0开始,不然E=E*i横为1*/
for(i=1;i<=n;i++)E=E*i;
returnE;
}
/*主函数*/
main()
{
longs;
intk,n;
scanf("%d",n);
/*输入阶乘次数上限n*/
s=0;
for(k=1;k<=n;k++)s=s+f(k);
/*如果s的初始值定为1,那么k就要从0开始了,连带把定义函数的i也改为从0开始*/
printf("%ld\n",s);
}